当类没有实现必需的属性时,是否会抛出标准的.NET异常?

时间:2010-04-13 22:09:55

标签: c# .net generics attributes

假设我想在调用一个没有required属性的类型的泛型方法时抛出一个新的异常。是否存在适合这种情况的.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 个答案:

答案 0 :(得分:10)

我看到它的方式,你可以采取三种方式之一......
1) NotSupportedException
2) NotImplementedException
3) You can make your own Exception type

答案 1 :(得分:3)

我知道我已经看到一些内置代码模板将NotImplemented异常作为占位符抛出,因此这可能是一个很好的起点。

答案 2 :(得分:0)

我相信

NotSupportedException是个不错的选择。此外,TargetExceptionTargetInvocationException也适用于反思。

答案 3 :(得分:0)

NotSupportedException,因为NotImplemented在技术上适用于存根,这不是这里发生的事情。该类型不受支持。

话虽如此,我不知道为什么MS未能提供带有内部定义的规范列表。它令人难以置信。