C#:在接口中实现抽象属性以实现子级

时间:2018-02-02 15:45:10

标签: c# class interface parent-child abstract

我在互联网上找不到答案,所以我会请求你的帮助。 我有一个抽象类:

public abstract class AbstractClass
{
    String Name { get; }        
}

儿童班1:

public class ApplicationDetailsModel : AbstractClass
{
   // This will implement unique properties
}

实现IComponent的每个类都将实现“AbstactClass”的子类。

示例实现:

public class ExampleClass : IComponent
{
    public ApplicationDetailsModel DetailsModel;
}

和界面

public interface IComponent : IPageViewModel
{
    AbstractClass DetailsModel { get; }
}

此示例无法编译,因为接口强制实现

AbstractClass DetailsModel = new ApplicationDetailsModel();

是否有正确的方法来强制在接口中实现特定抽象类的子属性?

1 个答案:

答案 0 :(得分:5)

使用约束

使您的界面具有通用性
public interface IComponent<T> : IPageViewModel
    where T : AbstractClass
{
    T DetailsModel {get;}
}

以示例:

public class ExampleClass : IComponent<ApplicationDetailsModel>{
{
    public ApplicationDetailsModel DetailsModel { get; private set; }
}