Как я могу настроить свою программу для передачи объекта в правильный класс? - PullRequest
0 голосов
/ 06 декабря 2010

Я не знаю, может ли это быть чем-то, что может обрабатывать DI, так как я все еще оборачиваюсь с помощью DI.

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

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

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

Спасибо

1 Ответ

1 голос
/ 06 декабря 2010

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

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

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

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

...