2016-08-01 136 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將被註冊,直到應用程序執行。 –