私はValidateItemイベントを追加するカスタムコレクションを持っています。このValidateItemイベントは、アイテムがカスタムコレクションに追加または更新されるたびに呼び出されます。C#Custom EventArgs質問
派生クラスがイベントを購読し、アイテムが「有効」であるかどうかの独自のロジックを判断し、アイテムが「無効」であればコレクションに追加することを禁止します。
しかし、私はイベントに発信者に何が起こっているのか、また何が起こっているのかについての情報を伝える方法を理解しようとしています。
私のカスタムeventargsはCancelEventArgsを継承しているので、Cancelビットを呼び出し元に渡すことができます。しかし、エラー情報(エラーコード、メッセージなど)がこのように戻されるケースは一度もなかったので、これが最善の方法ではないかと思います。
カスタムeventargsクラスに戻すエラーデータを追加するだけでよいのですか?またはこれを達成するためのより良い方法が他にありますか?
public delegate void ItemValidationEventHandler(object sender, ItemValidationEventArgs e);
public class ItemValidationEventArgs : CancelEventArgs
{
public ItemValidationEventArgs(object item, ObjectAction state, EventArgs e)
{
Item = item;
State = state;
EventArgs = e;
}
public ItemValidationEventArgs(object item, ObjectAction state) : this(item, state, new EventArgs())
{
}
public ItemValidationEventArgs() : this(null, ObjectAction.None, new EventArgs())
{
}
// is there a better way to pass this info?
public string ErrorMessage {get; set;}
public int ErrorNumber {get;set;}
public object Item { get; private set; }
public ObjectAction State { get; private set; }
public EventArgs EventArgs { get; private set; }
}
UPDATE:
はここに私のEventArgsクラスで私は別の他のオプションは、このようなものを使用することですとします派生クラスで
virtual bool Validate(object item, ObjectAction action, out string errorMessage)
方法。私はパラメータを避ける方が好きですが...
誰もが各アプローチの長所と短所について考えていますが、私はそれらを聞いてみたいです!
おかげで、 マックス
よく言われて+1 –