如何运行已知的对象变量方法?

时间:2012-08-26 17:32:32

标签: c# object methods

我有public object LastControl,它将包含自定义类,其中一些包含Resize()方法。我想知道如何找出当前值是否属于具有此方法的类,并且在这种情况下运行它。

截至目前,我在尝试编译LastControl.Resize()时遇到错误,因为类型对象本身没有该方法。作为控件类进行转换可能是一个简单的解决方案,但是有多个类,所以我不知道该怎么做。我想我应该从某种方式开始使用GetType

1 个答案:

答案 0 :(得分:5)

GetType提到的基于反射的方式使用GetMethod method。您可以使用它来获取MethodInfo实例,然后可以调用Invoke method来执行该方法。

然而,更简洁的方法是声明一个提供Resize()方法的接口:

public interface IResizeable
{
    void Resize();
}

在具有Resize()方法的任何自定义类中,您都可以实现该接口。然后,为了检查LastControl的当前值是否具有Resize()方法,您尝试使用as投射对象,如果结果不是null,则可以安全地调用Resize()方法:

IResizeable resizeable = LastObject as IResizeable;
if (resizeable != null) {
    resizeable.Resize();
}