鉴于界面
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)
你可以看两种方法.
(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.