2010-12-06 4 views
0

Я не знаю, если это то, что может быть обработано DI, так как я все еще обнимаю голову, используя DI.Как настроить мою программу, чтобы передать объект в правильный класс?

Проект: У меня есть объект ISettings, который я хочу передать классу ISettingsVerification. Тем не менее, у меня есть несколько разных классов, которые наследуются от ISettingsVerification. Эти классы обрабатывают объект ISettings по-разному на основе определенного свойства (IisVersion).

Вопрос: Как я могу настроить его так, что в основной программе, я не волнуюсь о том, какие ISettingsVerification класс получает объект ISettings, что моя программа будет обрабатывать эту логику. Я знаком с использованием DI Ninject, будет ли это что-то, что я мог бы там сделать, или мне придется использовать что-то вроде инструкции Switch, чтобы сделать это определение?

Мне нравится идея извлечь эту логику из сердца моего приложения.

Благодаря

ответ

1

Вы, вероятно, придется написать заявление переключатель где-то. Но, конечно, это не должно быть в «сердцевине приложения».

Одним из решений было бы использовать какое-то фабрика:

public class SettingsVerificationFactory : ISettingsVerificationFactory 
{ 
    public ISettingsVerification Create(Version iisVersion) 
    { 
     switch (iisVersion) 
     { 
      case 6: 
       return new Iis6SettingsVerification(); 
      case 7: 
       return new Iis7SettingsVerification(); 
      // etc... 
     } 
    } 
} 

Теперь вы можете использовать этот завод (через инъекцию или непосредственно), когда вам нужен верификатор для объекта установок.

+0

@rmac: Спасибо, вот что я продолжал приходить. Следующий вопрос, который у меня для вас есть: Поскольку я собираюсь, скорее всего, генерировать разные объекты ISettings, определенные версиями OS/IIS, с которыми я работаю, - и этот объект передается в SettingsVerificationFactory. Было бы лучше, чтобы либо A) отправляет объект ISettings в правильный класс ISettingsVerification на основе либо свойства в объекте ISettings (то есть IisVersion), либо класса typeof (т.е. Iis6Settings) ИЛИ – pghtech 2010-12-06 17:23:48

Смежные вопросы