我正在使用自定义属性将元数据附加到类方法。在运行时期间,将验证这些属性及其参数。如果属性(或属性参数)证明无效,那么对于要抛出的现有异常类是否有共识?
例如,给定一个将实例方法名称作为其构造函数参数的属性:
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
。如果(例如,由于拼写错误)没有找到具有该名称的方法,则需要抛出异常。既然我不想发明新的异常类,你会建议哪一个?
而且可以肯定的是,在编译期间无法验证方法名称,对吧?
答案 0 :(得分:0)
InvalidOperationException
是我个人在“出现问题”时使用的全能用途。
但说实话,这听起来像是向我推导自己的例外的完美案例。