通过构造函数传递通用参数

时间:2020-10-05 18:00:45

标签: c# .net object generics parameters

我有两个类,公司联系人,我需要通过表单的构造方法传递这些类之一的实例。

    private Address _address;
    private Object _genericObject;

        public frmAddressAddModify(Address address = null, Object genericObject = null)
        {
            InitializeComponent();

            if (address != null)
            {
                _address = address; 
            }

            if (genericObject != null)
            {
                _genericObject = genericObject;
            }

        }

但是,我需要能够使用 genericObject 的属性和方法,该属性和方法可以是公司或联系人,具体取决于我要传递的内容。

顺便说一句,我正在使用的属性位于“公司”和“联系人”中,且名称相同(地址)。

2 个答案:

答案 0 :(得分:2)

多态性101:

两个类都实现一个接口,并将该实例传递给您的类。

interface IHaveAddress // Please find a better name for this
{
    Address Address {get;}
}

class Companies : IHaveAddress
{
    public Address Address {get;} 
    // other staff goes here
}

class Contacts: IHaveAddress
{
    public Address Address {get;} 
    // other staff goes here
}

并在表单的构造函数中:

public frmAddressAddModify(IHaveAddress haveAddress)
{
// code here...
}

答案 1 :(得分:0)

您不能在c#中使用泛型构造函数,我认为这是您的目标。为什么此对象可以是公司或联系人?他们之间有联系吗?也许它们都可以实现相同的接口。然后您注入了该接口。这是一种解决方法。