参照しているクラスのメソッドを呼び出したい。呼び出したいメソッドにはカスタム属性があります。現在、この属性を見つけて、クラス属性のプロパティを呼び出すことができます。
そのメソッドを呼び出す方法はありますか?
PS/ プロジェクトは vbnet で書かれていますが、解決策は c# でも同じだと思います。
参照しているクラスのメソッドを呼び出したい。呼び出したいメソッドにはカスタム属性があります。現在、この属性を見つけて、クラス属性のプロパティを呼び出すことができます。
そのメソッドを呼び出す方法はありますか?
PS/ プロジェクトは vbnet で書かれていますが、解決策は c# でも同じだと思います。
属性を見つけることができれば、そのメソッドを持っていると思います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 });