如何在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);
    }
}
    

要回复问题请先登录注册