繁体   English   中英

接口中的隐式泛型类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM