我在我的項目中使用Autofac作爲IoC。由於一些傳統的軟件庫,我必須將一些服務傳遞給無法解析的控制器,並且必須作爲參數傳遞。Autofac使用委託工廠類型來解析
我做了利用委託工廠這樣一個普通的控制:
public MyClass<TController, TInterface> {
private delegate TController ControllerFactory(TInterface service);
protected TController _myController;
protected TController Controller {
get
{
return _controller
?? (_controller = ServiceLocator.Resolve<ControllerFactory>()
.Invoke(this);
}
}
}
此作品完美,但對於這個工作,我需要控制的服務參數名稱和委託服務的參數名稱相同,因爲正如我讀過的,Autofac將參數BY NAME!
我已經看到了你可以通過註冊類型與通用的Func鍵<>類做到這一點,但由於傳統的應用程序,我需要離開「乾淨」的註冊,即:
containerBuilder.RegisterType<MyController>();
有誰知道如果可以通過類型使委託匹配參數?
感謝您的輸入...無論如何,由於項目中的架構問題,我無法爲了兼容性原因而更改,最終無法實現此解決方案...但我會牢記未來的實施! – 2015-02-20 09:45:19