私はカスタム属性を使用して、メタデータをクラスメソッドに添付しています。実行時に、これらの属性とそのパラメータが検証されます。属性(または属性パラメータ)が無効であると判明した場合、既存の例外クラスがスローするものについてコンセンサスがありますか?そのコンストラクタのパラメータとしてインスタンスメソッドの名前を取って、属性与え例えば無効な属性または属性パラメータに対してスローする例外はありますか?
、:へのすべての方法を歩いていく
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
に解決してください。その名前のメソッドが見つからない場合(たとえば、タイプミスのため)、例外をスローする必要があります。私は新しい例外クラスを作成したくないので、どちらをお勧めしますか?
コンパイル時にメソッド名を検証する方法はありませんか?
はい、おそらくカスタム例外があります。私のジレンマは、これが実行時に検出されるコンパイル時エラーのようなものです... –