我有一组实施IConnectable
和IEntity
的POCO课程。
在其中一个类Connection
中,我想要两个定义为实现IConnectable
的对象的属性。
public interface IConnectable
{
string Name { get; set; }
string Url { get; set; }
}
我的连接类
public partial class Connection : IEntity
{
public int Id { get; set; }
public T<IConnectable> From { get; set; }
public T<IConnectable> To { get; set; }
public ConnectionType Type { get; set; }
public double Affinity { get; set; }
public DateTimeOffset CreatedOn { get; set; }
}
我知道我不能使用通用对象属性 - 所以有没有其他方法可以做到这一点?
答案 0 :(得分:2)
最有可能的是根本没有仿制药:
public partial class Connection : IEntity
{
public int Id { get; set; }
public IConnectable From { get; set; }
public IConnectable To { get; set; }
public ConnectionType Type { get; set; }
public double Affinity { get; set; }
public DateTimeOffset CreatedOn { get; set; }
}
如果重要的是Connection
的实例返回更多类型的东西,那么你需要使整个类具有通用性:
public partial class Connection<T> : IEntity
where T : IConnectable
{
public int Id { get; set; }
public T From { get; set; }
public T To { get; set; }
public ConnectionType Type { get; set; }
public double Affinity { get; set; }
public DateTimeOffset CreatedOn { get; set; }
}
如果您需要为这两个属性设置两种不同的IConnectable
类型,则需要使用通用参数:
public partial class Connection<TFrom, TTo> : IEntity
where TFrom : IConnectable
where TTo : IConnectable
{
public int Id { get; set; }
public TFrom From { get; set; }
public TTo To { get; set; }
public ConnectionType Type { get; set; }
public double Affinity { get; set; }
public DateTimeOffset CreatedOn { get; set; }
}