0

私はしばらくの間問題を抱えていましたが、それを理解することはできません.

外部イベントをメソッドまたはプロパティに添付するにはどうすればよいですか? つまり、メソッドまたはプロパティアクセサーが呼び出されるたびにイベントが発生するように、リフレクションを介してクラスにイベントをアタッチするにはどうすればよいかということです (次のようになります:

OnPropertyAccessing(object sender, PropertyInfo property, EventArgs e)

私が基本的に必要としているのは、(リフレクションを使用して) ダミー クラスとして機能し、プロパティの名前のみが重要な子のすべてのプロパティまたはメソッド呼び出しを処理する抽象クラス (または拡張機能を使用した外部) を作成することです。

これは不明確かもしれないと思うので、例えば:

public class Father
{ ... }

public class Son1 : Father
{
    public string aaa {get; set;}
    public string bbb {get; set;}
}

public class Son2 : Father
{
    public DateTime ccc {get;set;}
}

ご覧のとおり、「Son1」と「Son2」には何も意味がないように見えます。これは、実際の「思考」のすべてが、プロパティ「aaa」に対して要求が行われたことを警告された「父」によって行われるためです。タイプ "Son1" のオブジェクト "s" の値を取得し、プロパティが何を返すかを決定します。

明らかに、私は次のようなものを書きたくありません。

public class Father
{
    protected object pget(string propertyName)
    { ... }
    protected void pset(string propertyName, object value)
    { ...}
}

public class Son1 : Father
{
    public string aaa
    {
        get
        {
            return base.pget("aaa").toString();
        }
        set
        {
            base.pset("aaa", value);
        }
    }

    ...
} 
4

1 に答える 1

0

外部イベントをメソッドまたはプロパティに添付するにはどうすればよいですか? つまり、メソッドまたはプロパティアクセサーが呼び出されるたびにイベントが発生するように、リフレクションを介してクラスにイベントをアタッチするにはどうすればよいですか?

一般的にはできません。これは、.NET がすぐにサポートできるものではありません。

この種のことをサポートするPostSharpなどの AOP フレームワークを見たいと思うかもしれません。

(余談ですが、デモ コードの場合でも、.NET 命名規則に固執しようとします。)

于 2013-05-01T16:28:17.190 に答える