2

参照しているクラスのメソッドを呼び出したい。呼び出したいメソッドにはカスタム属性があります。現在、この属性を見つけて、クラス属性のプロパティを呼び出すことができます。

そのメソッドを呼び出す方法はありますか?

PS/ プロジェクトは vbnet で書かれていますが、解決策は c# でも同じだと思います。

4

1 に答える 1

2

属性を見つけることができれば、そのメソッドを持っていると思いますMethodInfo。メソッドを呼び出すだけMethodInfo.Invokeで、使用するオブジェクトのインスタンス (またはnull静的メソッドの場合) と、メソッドに渡すすべてのパラメーターを (プロトタイプと同じ順序で) 指定する必要があります。

たとえば、このプロトタイプでメソッドを呼び出す必要がある場合:

void Foo(string name, int value);

そして、そのメソッドを見つける関数があります(特定の属性を検索します):

MethodInfo FindMethodWithAttribute(Type attributeType, Type objectType);

anObject次のコードを使用して、そのメソッド (仮想オブジェクトの) を見つけて呼び出すことができます。

MethodInfo method = FindMethodWithAttribute(
    typeof(MyAttribute), // Type of the "marker" attribute
    anObject.GetType()); // Type of the object may contain the method

method.Invoke(anObject, new object[] { "someText", 2 });
于 2012-05-29T15:58:37.590 に答える