Есть ли стандартное исключение .NET, которое нужно генерировать, когда класс не реализует обязательный атрибут? - PullRequest
4 голосов
/ 14 апреля 2010

Предположим, я хочу вызвать новое исключение при вызове универсального метода с типом, который не имеет обязательного атрибута. Существует ли исключение .NET, подходящее для этой ситуации, или, что более вероятно, будет подходящим предком для пользовательского исключения?

Например:

public static class ClassA
{

    public static T DoSomething<T>(string p)
    {
        Type returnType = typeof(T);
        object[] typeAttributes = returnType.GetCustomAttributes(typeof(SerializableAttribute), true);
        if ((typeAttributes == null) || (typeAttributes.Length == 0))
        {
             // Is there an exception type in the framework that I should use/inherit from here?
             throw new Exception("This class doesn't support blah blah blah"); 
             // Maybe ArgumentException? That doesn't seem to fit right.
        }
    }
} 

Спасибо.

Ответы [ 4 ]

10 голосов
/ 14 апреля 2010

, как я вижу, вы можете пойти одним из 3-х путей ...
1) NotSupportedException
2) NotImplementedException
3) Вы можете создать собственный тип исключения

3 голосов
/ 14 апреля 2010

Я знаю, что видел, как некоторые из встроенных шаблонов кода генерируют исключение NotImplemented в качестве заполнителя, так что это может быть хорошим началом.

0 голосов
/ 14 апреля 2010

NotSupportedException as NotImplemented технически для заглушек, чего не происходит здесь. Тип не поддерживается.

При этом я не знаю, почему MS не предоставила канонический список со своими внутренними определениями. Это уму непостижимо.

0 голосов
/ 14 апреля 2010

NotSupportedException я считаю хорошим выбором. Также TargetException и TargetInvocationException являются специфическими для Reflection.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...