我有public object LastControl
哪些将包含自定义类,其中一些有Resize()方法.我想知道如何找出当前值是否属于具有此方法的类,并在此情况下运行它.
截至目前,我在尝试编译时遇到错误,LastControl.Resize()
因为类型对象本身没有该方法.作为控件类进行转换可能是一个简单的解决方案,但是有多个类,所以我不知道该怎么做.我想我应该从GetType
某种方式开始使用.
正如您所提到的GetType
,基于反射的方法使用该GetMethod
方法.您可以使用它来获取一个MethodInfo
实例,然后您可以调用该Invoke
方法来执行该方法.
然而,更简洁的方法是声明一个提供Resize()
方法的接口:
public interface IResizeable
{
void Resize();
}
Run Code Online (Sandbox Code Playgroud)
在具有Resize()
方法的任何自定义类中,您可以实现该接口.然后,为了检查当前值LastControl
是否有Resize()
方法,您尝试使用转换对象as
,如果结果不是null
,则可以安全地调用Resize()
方法:
IResizeable resizeable = LastObject as IResizeable;
if (resizeable != null) {
resizeable.Resize();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
79 次 |
最近记录: |