[英]Implicit generic type in interface
我有一个界面:
public interface ILabel <A, F> where A: IAddress where F: IFeatures
{
A Sender { get; set; }
A Receiver { get; set; }
F Features { get; set; }
}
还有一个 class 继承自这个接口:
public class Label : ILabel<Address, Features>
{
public int LabelId { get; set; }
[Required]
public Address Sender { get; set; }
[Required]
public Address Receiver { get; set; }
[Required]
public Features Features { get; set; }
public string Identcode { get; set; }
public string Base64 { get; set; }
}
我想通过 ILabel 初始化 Label object 而不在 ILabel 提供泛型类型,如下所示:
ILabel label = new Label();
我知道这在 Java 中是可能的。 你知道如何实现吗? 提前致谢!
我找到了解决方案:
标签:
public interface ILabel
{
IAddress Sender { get; set; }
IAddress Receiver { get; set; }
IFeatures Features { get; set; }
}
额外的新 class 用作抽象基础 class,如桥
public abstract class BaseLabel<A, F> : ILabel where A: IAddress where F: IFeatures
{
public virtual A Sender { get; set; }
public virtual A Receiver { get; set; }
public virtual F Features { get; set; }
IAddress ILabel.Sender
{
get
{
return Sender;
}
set
{
Sender = (A)value;
}
}
IAddress ILabel.Receiver
{
get
{
return Receiver;
}
set
{
Receiver = (A)value;
}
}
IFeatures ILabel.Features
{
get
{
return Features;
}
set
{
Features = (F)value;
}
}
}
和 Label class
public class Label : BaseLabel<Address, Features>
{
public int LabelId { get; set; }
public string Identcode { get; set; }
public string Base64 { get; set; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.