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

ras*_*305 2 c# interface class parent-child abstract

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

public abstract class AbstractClass
{
    String Name { get; }        
}
Run Code Online (Sandbox Code Playgroud)

儿童班1:

public class ApplicationDetailsModel : AbstractClass
{
   // This will implement unique properties
}
Run Code Online (Sandbox Code Playgroud)

实现IComponent的每个类都将实现"AbstactClass"的子类.

一个示例实现:

public class ExampleClass : IComponent
{
    public ApplicationDetailsModel DetailsModel;
}
Run Code Online (Sandbox Code Playgroud)

和一个界面

public interface IComponent : IPageViewModel
{
    AbstractClass DetailsModel { get; }
}
Run Code Online (Sandbox Code Playgroud)

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

AbstractClass DetailsModel = new ApplicationDetailsModel();

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

Dav*_*ave 5

使用约束使您的界面通用

public interface IComponent<T> : IPageViewModel
    where T : AbstractClass
{
    T DetailsModel {get;}
}
Run Code Online (Sandbox Code Playgroud)

举例:

public class ExampleClass : IComponent<ApplicationDetailsModel>{
{
    public ApplicationDetailsModel DetailsModel { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)

  • 看起来这就是我正在寻找的解决方案。谢谢。我会尝试一下,如果有效,我会将其标记为已接受的答案。 (2认同)