首页 > 解决方案 > 在子嵌套类c#中继承和扩展父嵌套类

问题描述

嗨,我一直在努力解决如何从父类的嵌套类继承和扩展子类的嵌套类中的属性。下面的例子:

public class AttributeViewModel{
   //Common Properties...

   public AttributeViewModelSettings Settings {get; set;}

   public class AttributeViewModelSettings {
     //Common Settings
   } 
}

public class ListAttributeViewModel : AttributeViewModel {
   //List specific properties...

   public ListAttributeViewModelSettings Settings { get; set; }

   public class ListAttributeViewModelSettings : AttributeViewModelSettings {
     //Settings Specific to Child Class
   }
}

我们这样做是因为我们还不确定用户可以选择的每个可能的属性需要哪些设置。这样做可以让我们轻松更改这些设置,但我只是无法找出处理此类事情的正确方法。

标签: c#inheritanceinner-classes

解决方案


如果我正确理解了您的问题,您可以尝试使用泛型:

public abstract class AttributeViewModelBase
{
    public abstract AttributeViewModelSettings BaseSettings{ get; }
    public class AttributeViewModelSettings
    {
        //Common Settings
    }

}
// Define other methods, classes and namespaces here
public class AttributeViewModel<T>: AttributeViewModelBase 
    where T: AttributeViewModelBase.AttributeViewModelSettings
{
    //Common Properties...
    public override AttributeViewModelSettings BaseSettings => Settings;
    public T Settings { get; set; }

}

public class ListAttributeViewModel : AttributeViewModel<ListAttributeViewModel.ListAttributeViewModelSettings>
{
    //List specific properties...

    public ListAttributeViewModelSettings Settings { get; set; }

    public class ListAttributeViewModelSettings : AttributeViewModelSettings
    {
        //Settings Specific to Child Class
    }
}

推荐阅读