用子类属性实现接口

时间:2018-09-05 06:33:15

标签: c#

提供界面

public interface baseInterface {
    IList<double> listProperty { get; set; }
}

按照下面的示例,有什么方法可以将具有属性的接口实现为属性类型的子类?

public class newClass : baseInterface
{
    public List<double> listProperty { get; set; }
}

2 个答案:

答案 0 :(得分:5)

您可以查看两种方法。

(1)您必须使用显式实现才能使其工作:

public interface BaseInterface
{
    IList<double> ListProperty { get; set; }
}

public class NewClass : BaseInterface
{
    public List<double> ListProperty { get; set; }

    IList<double> BaseInterface.ListProperty
    {
        get => this.ListProperty;
        set => this.ListProperty = value.ToList();
    }
}

(2)使用泛型允许使用子类:

public interface BaseInterface<L, T> where L : IList<T>
{
    L ListProperty { get; set; }
}

public class NewClass : BaseInterface<List<double>, double>
{
    public List<double> ListProperty { get; set; }
}

这两种方法都可以使您在public List<double> ListProperty { get; set; }中有一个NewClass

答案 1 :(得分:1)

您需要使接口通用。

SELECT Mac 
FROM TableABC AS T
WHERE State = 5
  AND NOT EXISTS ( SELECT * FROM TableABC T2
                   WHERE T2.Mac = T.Mac
                     AND T2.State = 4 )