如何解决如何在C#中实现LateBinding
| 我在该类中有一个通用类,我编写了一个方法,该方法应接受“ 0”类的对象作为参数。 功能如下:protected void AddNewForm(object o )
{
try
{
o.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
我正在从另一个类调用此函数。但是当我将此功能称为-
Contact objContact=new Contact();
AddNewForm(objContact);
但它显示了该函数中的错误。错误为-
\'object \'不包含定义
用于“显示”,没有扩展方法
\'Show \'接受的第一个参数
可以找到\'object \'类型(您是
缺少using指令或
组装参考?)
如何在C#Windows应用程序中实现后期绑定?
谢谢。
解决方法
如果使用.NET 4,则可以使用新的
dynamic
关键字:
protected void AddNewForm(dynamic o)
{
try
{
o.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
如果您不使用.NET 4,则必须求助于反射。
然后看起来像这样:
protected void AddNewForm(object o)
{
try
{
o.GetType().GetMethod(\"Show\",new Type[0]).Invoke(o,null);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
但是您确实应该考虑使用通用接口:
interface IShowable
{
void Show();
}
class Contact : IShowable
{
public void Show() { /* ... */ }
}
protected void AddNewForm(IShowable o)
{
try
{
o.Show();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。