0

一部の XML を検証する静的メソッドがあります。XML を検証し、エラーで停止しないようにするには、エラー イベントを処理する静的コールバック ValidationEventHandler が必要です (コールバックを登録しないと、エラーによって例外がスローされ、検証が停止します)。

したがって、この ValidationEventHandler では、検証エラーを処理します。静的検証メソッドは XML を読み取り、エラー イベントがあると、イベント ハンドラーが呼び出されます。

私の問題は、静的検証メソッドは、エラーがあったかどうかを示す bool フラグと、エラーのリストを含む出力パラメーター文字列を返す必要があることです。しかし、エラー処理は ValidationEventHandler で行われますが、検証メソッドが静的であるため静的でなければなりません。イベント ハンドラーで発生したエラーの実行中のリストを保持するにはどうすればよいでしょうか?

これらが静的でない場合は、エラー フラグとエラー文字列を保持するインスタンス変数を作成するだけですが、静的イベント ハンドラーから、エラーを引き起こす処理を行う静的メソッドにデータを渡す方法がわかりません。そのハンドラに対して発生するイベント。

何か案は?

4

1 に答える 1

1

私がこれを正しく理解していれば、いくつかの異なる方法でこれを行うことができます

最初の方法は、静的プロパティを作成することです。

static bool HasErrors { get; set; }

void HandleErrorEvent(object sender, EventArgs e)
{
    HasErrors = true;
    // ... your logic here
}

もう 1 つのオプション (イベント コードにアクセスできるかどうかによって異なります) は、カスタムEventArgsクラスを作成することです。

public ExceptionEventArgs : EventArgs
{
    public bool HasErrors { get; private set; }
    // Anything you else you want, like a list of error strings etc...
}

void HandleError(object sender, ExceptionEventArgs e)
{
    e.HasErrors = true;
    // ... your logic here
}

void Validate()
{
    var eventArgs = new ExceptionEventArgs()
    OnHandleError(this, eventArgs);
    if(eventArgs.HasErrors)
        // do something special
}
于 2012-07-23T20:17:38.850 に答える