У меня есть код, который выглядит как:Конструктор invocation возвращен null: что делать?
private static DirectiveNode CreateInstance(Type nodeType, DirectiveInfo info) {
var ctor = nodeType.GetConstructor(new[] { typeof(DirectiveInfo) });
if(ctor == null) {
throw new MissingMethodException(nodeType.FullName, "ctor");
}
var node = ctor.Invoke(new[] { info }) as DirectiveNode;
if(node == null) {
// ???;
}
return node;
}
Я ищу что делать (например, какой тип исключения бросить), когда метод Invoke
возвращает то, что не является DirectiveNode
или когда он возвращает null
(указанном // ???
выше).
(договор метода, nodeType
всегда описывает подкласс DirectiveNode
.)
Я не уверен, что при вызове конструктора будет возвращать null
, поэтому я не уверен, если я должен обрабатывать что-либо вообще, но Я все еще хочу быть в безопасности и бросать исключение, если что-то пойдет не так.
Вау, я не знал о 'Activator.CreateInstance'. Благодарю. По моему контракту я уверен, что для функции отправляется только подкласс «DirectiveNode», так что это не проблема. В любом случае, спасибо. =] – strager
Вы останавливаете отладчик и проверяете? Просто потому, что это кажется невозможным, это не значит, что это невозможно. – snarf
'as' никогда не возвращал' null'. Я спрашивал, пытаюсь ли я что-то делать, если это так, потому что это выглядит как невозможное условие. – strager