【发布时间】:2014-07-31 00:40:44
【问题描述】:
我有三种不同类型的设置(每个对应一个类)。考虑一下,我们知道必须遵循的设置(比如 1、2 和 3)。现在,每个设置都需要不同的设置。
-
假设,我们有 SettingB、SettingC、SettingD,除了 SettingA 之外的所有三种设置都是通用的。所以,我所做的是,我对所有设置类型(A、B 和 C)都有一个通用界面设置。
interface IConfigureSettings { void ConfigureSettings(); }对于每个设置类型仅公开此方法以进行配置。
-
在 SettingA 中,我们有子设置(SubSettingsAA、SubSettingsAB、SubSettingsAC)。
因此,为此,我有一个 SettingA 的抽象类,它由 SubSettingAA、SubSettingAB、SubSettingAC 继承。abstract class SettingA : IConfigureSettings { List<SettingA> _subSettings; public void ConfigureSettings() { //Should Perform configuration for the given site. This is what I need. } } -
在这些子设置中,SubSettingsAA 和 SubSettingsAB 可能有 2 种不同的配置(比如 configurationA()、ConfigurationB())。 ConfigurationA() 不在 SubSettingsA 中。 SubSettingsAB 类同时包含 ConfigurationA() 和 ConfigurationB()。
class SubSettingsAA : SettingA { ConfigurationB(); } class SubSettingsAB : SettingA { ConfigurationA(); ConfigurationB(); } class SubSettingAC : SettingA { ConfigurationC(); ConfigurationD(); }
现在,在 Setup1 的情况下,只有 ConfigurationA() 是可见的,而在 setup2 和 setup3 的情况下,一切都将被配置。 SubSettingAC 中的 Configuration's() 将针对所有三种设置进行配置。
所以,这就是我所拥有的。现在,我想要的是为 SettingA 调用 ConfigureSettings(),它应该根据设置类型配置所有内容。考虑一下,设置类型可用。
【问题讨论】:
-
稍微修改了问题。为 SubSettings 添加了另一种方案。很抱歉给您带来不便。
-
我认为我们没有足够的信息来建议设计。如果不了解这些类的更多信息,我们不知道多态性或泛型在多大程度上是合适的,或者哪些支持模式可能有用。还有大量信息,我们很难处理。我知道这是问题性质的一部分,但您最好尝试确定一些更具体的问题并专注于这些问题,以及一些最少的代码(甚至只是接口规范)
-
这样更好吗?如果您对此有任何疑问,请告诉我。让我知道是否需要更改现有的类结构或其他任何内容。我需要知道我应该在 SettingA 的 ConfigureSettings() 中做什么来实现上述场景。
-
是的,好多了!一件事,你想用第三个代码 sn-p 表示什么?例如,
ConfigurationB();是SubSettingsAA类上的方法吗? -
是的,认为 ConfigurationB() 是 SubSettingsAA 类中的一个方法。抱歉,函数名称不合适
标签: c# .net oop design-patterns dependency-injection