我不知道这是否可以由DI处理,因为我仍在使用DI来解决问题。
项目: 我有一个ISettings的对象,我想交给ISettingsVerification类。但是,我有许多继承自ISettingsVerification的不同类。这些类都根据特定属性(IisVersion)以不同方式处理ISettings对象。
问题: 我如何设置它,以便在主程序中,我不担心哪个ISettingsVerification类获取ISettings对象,我的程序将处理该逻辑。我熟悉使用DI Ninject,这是我可以在那里做的事情,还是我将不得不使用像Switch语句这样的决定?
我喜欢从应用程序的核心提取这个逻辑的想法。
由于
答案 0 :(得分:1)
您可能必须在某处编写一个switch语句。但当然,它不一定是“应用程序的核心”。
一种解决方案是使用某种工厂:
public class SettingsVerificationFactory : ISettingsVerificationFactory
{
public ISettingsVerification Create(Version iisVersion)
{
switch (iisVersion)
{
case 6:
return new Iis6SettingsVerification();
case 7:
return new Iis7SettingsVerification();
// etc...
}
}
}
现在,当您需要设置对象的验证程序时,您可以使用该工厂(通过注入或直接)。