que normalmente miro argumentos del constructor de valores nulos de la siguiente manera:Comprobación de parámetros constructor para nula antes de llamar a la base
public class SomeClass(SomeArgument someArgument)
{
if(someArgument == null) throw new ArgumentNullException("someArgument");
}
Pero decir que tengo una clase que hereda de otra clase:
public abstract class TheBase
{
public TheBase(int id)
{
}
}
public class TheArgument
{
public int TheId { get; set; }
}
public class TheInheritor : TheBase
{
public TheInheritor(TheArgument theArgument) : base(theArgument.TheId)
{
}
}
Y alguien ahora construye una instancia de TheInheritor
de esta manera:
var theVar = new TheInheritor(null);
No puedo th Se está llamando a la tinta de un modo que para comprobar null
antes de base
(y lanzando un NullReferenceException
). Si dejo que el constructor de TheBase
acepte una instancia de TheArgument
, no veo cómo podría tener esta verificación de cordura. ¿Pero qué pasa si TheArgument
está relacionado solo con TheInheritor
y hay muchas otras clases que heredan de TheBase
?
¿Alguna recomendación sobre cómo solucionar esto?
realizar una función de un parámetro? ¿Eso siempre estuvo en C#? Nunca lo vi antes. Pero se ve bien;) (¿o no?) –
Cosas geniales. Me pregunto por qué no pensé en eso. Aprendiendo todos los días :-) +1 –
Creo que me gusta el enfoque general aún mejor. Gracias Jon. –