2016-08-01 3 views
0

У меня есть родительский класс Животные и два дочерних класса Собака и кошка. Я использую Autofac для инъекций зависимостей. Я хочу зарегистрировать Dog и Cat на основе условия, указанного в файле конфигурации.Тип регистрации условно в Autofac

Я хочу, чтобы в моем классе модуля был указан следующий код.

If Dog mentioned in Config file then builder.RegisterType<Dog>().As<Animal>().PropertiesAutowired().SingleInstance(); If cat mentioned in Config file then builder.RegisterType<Cat>().As<Animal>().PropertiesAutowired().SingleInstance();

Просьба предложить для таких же.

+0

Что случилось с логикой, как вы написали это? – qujck

+0

Является ли это способом записи? –

ответ

0

Как это:

if (ConfigurationManager.AppSettings["Animal"] == "Dog") 
    builder.RegisterType<Dog>().As<Animal>().PropertiesAutowired().SingleInstance(); 

if (ConfigurationManager.AppSettings["Animal"] == "Cat") 
    builder.RegisterType<Cat>().As<Animal>().PropertiesAutowired().SingleInstance(); 
+0

Может быть тип разрешения во время выполнения? Если да, то как это будет? –

+0

@RashiGarg: Я не понимаю ваш вопрос. Вы можете перефразировать? – Steven

+0

Предположим, что я зарегистрировал класс Dog против животных, используя следующий код. 'builder.RegisterType () .As () .PropertiesAutowired(). SingleInstance(); 'Но во время выполнения, если я хочу зарегистрировать Cat, то как мы это сделаем, не останавливая приложение, потому что при запуске приложения Dog будет зарегистрирован до выполнения приложения. –