0

私は、jquery、WCFなどを使用してASP.netカスタムサーバーコントロールに取り組んでいます。開発者に、それを使用して、コントロールの公開されているプロパティの1つでon success関数(タスクがコントロールによって正常に実行されたときに呼び出される)を指定する柔軟性を提供したいと思います。私はイベントや代表者に不慣れですが、誰かが私にそれをどのように行うべきかについてのアイデアを教えてもらえますか?公有財産の種類を指定しますか?プロパティに関数名を設定しますか(マークアップまたは/およびコードで、文字列またはその他のタイプとして)?コントロールから関数/デリゲートを呼び出しますか?

いくつかのサンプルコードが好まれます(私が愚かなことを言った場合は惜しまないでください)

4

1 に答える 1

1

これは、イベントの標準パターンです。

class YourControl {
    public event EventHandler Success;

    protected void OnSuccess() {
        if(this.Success != null)
            this.Success(this, EventArgs.Empty);
    }
}

Success は、他のイベントと適切に統合するための EventHandler 型であるため、一般的なイベント ハンドラー (汎用ログ機能など) をサブスクライブできます。このイベントは、OnSuccess() を呼び出すことによって、コントロールとその子のどこでも簡単にトリガーできます。

さらに情報を追加して、イベントをカスタマイズすることもできます。

class YourControl {
    public class YourControlEventArgs: EventArgs {
        public TimeSpan Elapsed;
        public YourControlEventArgs(TimeSpan t) {
            this.Elapsed = t;
        }
    }

    public event EventHandler<YourControlEventArgs> Success;

    protected void OnSuccess(TimeSpan t) {
        if(this.Success != null)
            this.Success(this, new YourControlEventArgs(t));
    }
}

上記のように、特定のクラスは単純な EventArgs を拡張して .NET の残りの部分と統合するイベントの詳細を保持します。

于 2013-03-21T20:36:35.997 に答える