Я полагаю, что FXCop сообщает об этой ошибке здесь, потому что думает, что вы можете столкнуться с NullReferenceException путем доступа к windowsIdentity
при вызове конструктора базового класса.
Один из способов добавить проверку правильности для null - добавить статическую приватную функцию в ваш класс, которая может проверять параметр WindowsIdentity на null и предпринимать соответствующие действия:
private static WindowsIdentity ValidateIdentity( WindowsIdentity identity )
{
if( identity == null )
throw new ArgumentNullException( "identity" );
// possibly some other validation checks here...
return identity;
}
public Identity(WindowsIdentity windowsIdentity)
: base( ValidateIdentity( windowsIdentity ).Token )
{
init();
}
Другой подход заключается в использовании троичного оператора для проверки параметра, например:
public Identity(WindowsIdentity windowsIdentity)
: base( windowsIdentity == null ? null : windowsIdentity.Token )
{
init();
}
Но что вы должны спросить себя: что бы вы сделали? Если вы просто собираетесь сгенерировать исключение, возможно, будет правильным оставить код как есть, поскольку он уже будет проходить через NullReferenceException
, если аргумент равен нулю.