为无效的属性或属性参数抛出什么异常?

时间:2011-01-19 16:43:16

标签: c# attributes

我正在使用自定义属性将元数据附加到类方法。在运行时期间,将验证这些属性及其参数。如果属性(或属性参数)证明无效,那么对于要抛出的现有异常类是否有共识?

例如,给定一个将实例方法名称作为其构造函数参数的属性:

public class StateAttribute : Attribute {
    public string ParentState { get; set; }
    public StateAttribute() {}
}

在类中使用时

public StateMachine {
   [State]
   public Result TopState(Event e) { ... }

   [State( ParentState = "TopState" )]
   public Result NestedState(Event e) { ... }
}

初始化例程将遍历已应用State属性的所有方法,并将ParentState名称解析为实际MethodInfo。如果(例如,由于拼写错误)没有找到具有该名称的方法,则需要抛出异常。既然我不想发明新的异常类,你会建议哪一个?

而且可以肯定的是,在编译期间无法验证方法名称,对吧?

1 个答案:

答案 0 :(得分:0)

InvalidOperationException是我个人在“出现问题”时使用的全能用途。

但说实话,这听起来像是向我推导自己的例外的完美案例。