0

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

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

4

1 回答 1

5

正如您提到的那样,基于反射的方式GetType使用GetMethodmethod。您可以使用它来获取一个MethodInfo实例,然后您可以在该实例上调用该Invoke方法来执行该方法。

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

public interface IResizeable
{
    void Resize();
}

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

IResizeable resizeable = LastObject as IResizeable;
if (resizeable != null) {
    resizeable.Resize();
}
于 2012-08-26T17:39:47.900 回答