2015-08-27 51 views
0

我正在使用autofac IStartables加載配置,例如有沒有辦法自動解決並啓動模塊中可啓動的autofac?

public class MyConfig : IMyConfig, IStartable 
{ 
    public string configValue { get; private set; } 

    public void Start() 
    { 
    configValue = ... // Load from config file 
    } 
} 

然後引導程序模塊中,註冊這樣的:

builder.RegisterType<MyConfig>().As<IMyConfig>().As<IStartable>().SingleInstance(); 

使用autofac解決構造的配置時,這一切運作良好,但有時我想使用一些配置的引導程序模塊本身的值。我設法得到它的工作使用:

var config = new MyConfig(); 
config.Start(); 
// now we can use config.configValue 

這2步初始化似乎但是不很乾淨 - 在那裏有autofac這樣做的更好的辦法?

+0

我不明白究竟是什麼問題。當你說「但有時我想在引導程序模塊本身使用一些配置值」時,你是什麼意思? –

+0

根據配置值,在引導程序模塊中註冊的實例需要有不同的行爲,所以我需要使用模塊中的配置值。 – danio

+2

你能給出一些你試圖實現的例子嗎(用一些代碼)? –

回答

0

您無需致電Start()。當容器被構建時它將被自動調用。這是IStartable的整點。

http://docs.autofac.org/en/latest/lifetime/startup.html

+0

我不確定這是否會對您有幫助,正如他們在您發佈的鏈接中所說:「首次啓動將在容器建成時調用。」但是,我希望它可以在我的引導程序模塊中使用,並且我認爲autofac只在構造函數中使用它們時才構建容器。我將需要重新訪問這個並創建一個示例應用程序,因爲它很清楚我的描述不夠清晰... – danio

相關問題