我有两个类,公司和联系人,我需要通过表单的构造方法传递这些类之一的实例。
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 的属性和方法,该属性和方法可以是公司或联系人,具体取决于我要传递的内容。
顺便说一句,我正在使用的属性位于“公司”和“联系人”中,且名称相同(地址)。
答案 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#中使用泛型构造函数,我认为这是您的目标。为什么此对象可以是公司或联系人?他们之间有联系吗?也许它们都可以实现相同的接口。然后您注入了该接口。这是一种解决方法。