定义为实现接口的对象的属性
本文关键字:对象 属性 接口 实现 定义 | 更新日期: 2023-09-27 18:33:34
我有一组实现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; }
}
我知道我不能使用通用对象是属性 - 那么还有其他方法可以做到这一点吗?
很可能根本不
有泛型:
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; }
}