c# - 在子嵌套类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
}
}
我们这样做是因为我们还不确定用户可以选择的每个可能的属性需要哪些设置。这样做可以让我们轻松更改这些设置,但我只是无法找出处理此类事情的正确方法。
解决方案
如果我正确理解了您的问题,您可以尝试使用泛型:
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
}
}
推荐阅读
- go - 使用 go 模板读取和解析文件
- angular - matDatepicker 在页面底部而不是在文本框旁边打开日历
- r - 编写自定义包装器时如何在 dplyr::summarise() 中允许可选的汇总计算
- google-cloud-dataflow - 是否可以允许(或扩展)IO 连接器,以便它们可以读取以前的 PCollection 项目?
- reactjs - CORS 错误——为什么 XMLHttpRequest 在“webpack-internal:///./node_modules/react-select/dist/index-75b02bac.browser.esm.js”而不是服务器上生成
- oracle - 在插入或更新时,我想用当前时间戳更新 UPDATED_AT 列
- c# - 如何使用 ConfigurationManager 访问自包含应用程序中的配置部分?
- angular - 如何在多个表单字段上进行计算 - angular2+
- google-bigquery - BigQuery SELECT 列上每个月的最后一天
- javascript - 如何在 Angular 8 版本中将 owl-carousel 位置放置在滑块的左侧/右侧?