实现具有子类属性的接口

Sud*_*dsy 0 c#

鉴于界面

public interface baseInterface {
    IList<double> listProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法用属性作为属性类型的子类实现接口,如下例所示?

public class newClass : baseInterface
{
    public List<double> listProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

Eni*_*ity 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();
    }
}
Run Code Online (Sandbox Code Playgroud)

(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; }
}
Run Code Online (Sandbox Code Playgroud)

这两个让你有一个public List<double> ListProperty { get; set; }NewClass.