如何使用属性调用类的方法?

时间:2012-05-29 15:51:04

标签: c# .net vb.net reflection

我想在我引用的类上调用一个方法。我想调用的方法有自定义属性。目前我可以找到这个属性并调用我的类属性的属性。

有没有办法调用该方法?

PS /该项目是用vbnet编写的,但我认为c#中的解决方案是一样的。

1 个答案:

答案 0 :(得分: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 });