Я обычно проверяю аргументы конструктора для нулевых значений следующим образом:
public class SomeClass(SomeArgument someArgument)
{
if(someArgument == null) throw new ArgumentNullException("someArgument");
}
Но скажите, что у меня есть класс, который наследуется от другого класса:
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)
{
}
}
И кто-то теперь создает экземпляр TheInheritor
следующим образом:
var theVar = new TheInheritor(null);
Я не могу придумать способ проверки null
перед тем, как base
будет вызываться (и выбрасывает NullReferenceException
). Короче говоря, конструктор TheBase
принимает экземпляр TheArgument
, я не вижу, как я мог бы провести эту проверку работоспособности. Но что, если TheArgument
связано только с TheInheritor
и существует много других классов, наследующих от TheBase
?
Любые рекомендации о том, как решить эту проблему?