2011-01-19 77 views
3

我使用自定義屬性將元數據附加到類方法。在運行期間,這些屬性及其參數將得到驗證。是否有一個共識:如果一個屬性(或屬性參數)證明是無效的,那麼現有的異常類應該拋出什麼?拋出無效屬性或屬性參數有什麼異常?

例如,假設以一個實例方法名稱作爲其構造函數的參數屬性:

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

InvalidOperationException是我個人在「出現問題時」使用的通用設備。

但說實話,這聽起來像是一個完美的例子,爲我自己推導出自己的例外。

+1

是的,自定義的異常可能是要走的路。我的困境是,這是在運行時檢測到的編譯時錯誤... – 2011-01-19 17:07:53

相關問題