attributes
メソッド本体内でサポートされていないことは知っていますが、誰かがこれを回避している可能性があることを知りたかったのです。私が興味を持っているのはcustom Attribute
、メソッド本体と 2 つのものの中に入ることを可能にする手法です。
- クラス強化 (オブジェクトの作成
Foo foo = new Foo()
) - そのオブジェクトが特定の関数を呼び出すとき (
foo.bar()
)
metadata
後で、 を使用して入力した のをattributes
使用する予定reflection
です。私は実際にそうしなけれextented c#
ばならないと主張する人々のグループに出くわしましたが、ダウンロードできないため、それを確認することはできません.
ここに彼らの研究論文へのリンクがあります Freely Annotating c# 解決策を教えてください
アップデート
さらにリフレクションを使用すると、クラス Foo とそのメソッド bar の名前は既にわかっています。これの目的は、foo が何らかのメソッドで bar() を呼び出したことを知ることです。
例えば
static void Main()
{
[p1inst]
ConcretePrototype1 p1 = new ConcretePrototype1("I");
[p1call]
ConcretePrototype1 c1 = (ConcretePrototype1)p1.Clone();
Console.WriteLine("Cloned: {0}", c1.Id);
// Wait for user
Console.Read();
}
上記は結果を示す例です。現時点では、コンパイラがエラーを出すため実行できません。しかし、上記の研究論文の著者は、メソッド本体内の属性を許可するためにこれを行ったと主張しています
全体のポイントは、いくつかのメソッドでタイプのオブジェクトがFOO
存在し、そのオブジェクトが呼び出されたbar()
かどうかを識別することです