2011-01-19 4 views
3

私はカスタム属性を使用して、メタデータをクラスメソッドに添付しています。実行時に、これらの属性とそのパラメータが検証されます。属性(または属性パラメータ)が無効であると判明した場合、既存の例外クラスがスローするものについてコンセンサスがありますか?そのコンストラクタのパラメータとしてインスタンスメソッドの名前を取って、属性与え例えば無効な属性または属性パラメータに対してスローする例外はありますか?

、:へのすべての方法を歩いていく

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

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

初期化ルーチン:ようなクラスで使用

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

State属性が適用されていて、ParentStateの名前を実際のMethodInfoに解決してください。その名前のメソッドが見つからない場合(たとえば、タイプミスのため)、例外をスローする必要があります。私は新しい例外クラスを作成したくないので、どちらをお勧めしますか?

コンパイル時にメソッド名を検証する方法はありませんか?

答えて

0

InvalidOperationExceptionは、「何かが間違っている」と個人的に使用している万能のものです。

しかし、正直言って、これはあなた自身の例外を私に派生させるための完璧なケースのように思えます。

+1

はい、おそらくカスタム例外があります。私のジレンマは、これが実行時に検出されるコンパイル時エラーのようなものです... –

関連する問題