我是使用Autofac的新手,很抱歉,如果這是一個愚蠢的問題。不帶參數的Autofac工廠實例化
假設我有一個具有無參數構造函數的抽象類FooBase,以及一個名爲Foo的實現。在我的AP.Net MVC5客戶端代碼中,我希望能夠創建一個FooBase類型的對象(我已經設置Autofac將其解析爲Foo)的一個實例。這個實例的生命週期和範圍僅限於我的方法,我想以類似於調用工廠方法的方式來做到這一點。
目前我正在使用DependencyResolver,但它似乎有點做作。有沒有更簡單的方法來做到這一點?
例如,這裏是它目前看起來像......
public void SendMessage()
{
var foo = DependencyResolver.Current.GetService<FooBase>();
Debug.WriteLine(foo.Name);
}
我要尋找的東西多一點這樣的...
public void SendMessage()
{
var foo = IoC.Resolve<FooBase>();
Debug.WriteLine(foo.Name);
}
你不能簡單地添加一個'Resolve'泛型方法到你的'DependencyResolver'類反過來說'this.Current.GetService <...>()'?另一方面,你是不是可以在你的類的構造函數中注入'Foo'?這將使您不必使用'ServiceLocator'模式,這意味着您不必在方法中間調用'GetService',因爲您的所有依賴關係都將在構建類之前解決? –
嗨。不,不幸的是,在這種情況下,建築商注入或財產注入都不合適。該類包含運行時邏輯,該邏輯決定何時應該實例化類的新實例或何時應該從其他地方「提取」現有版本。 –
@StephenRoss我試圖找出Autofac是否已經有了一些標準的方法來做到這一點,然後再滾動我自己的。 –