如何註冊類型沒有NO PARAMETER構造函數的容器。如何使用PARAMETER構造函數註冊類型?
事實上,我的構造函數接受一個字符串,而且我通常傳遞一個表示Path的字符串。
所以當我解決它會自動創建新的類型,但傳入一個字符串?
如何註冊類型沒有NO PARAMETER構造函數的容器。如何使用PARAMETER構造函數註冊類型?
事實上,我的構造函數接受一個字符串,而且我通常傳遞一個表示Path的字符串。
所以當我解決它會自動創建新的類型,但傳入一個字符串?
很簡單。當你註冊構造函數時,你只需傳遞你想爲參數注入的值。容器根據值的類型(API)或參數名稱(XML)匹配您的構造函數。
在API中,你會怎麼做:
container.RegisterType<MyType>(new InjectionConstructor("My string here"));
這將選擇一個構造函數一個字符串,並決心時間將通過字符串「我在這裏的字符串」。
等價的XML(使用2.0配置模式)將是:
<register type="MyType">
<constructor>
<param name="whateverParameterNameIs" value="My string here" />
</constructor>
</register>
您還可以使用內置的InjectionConstructor和ResolvedParameter其中的connectionString是要使用的數據庫連接字符串。
// install a named string that holds the connection string to use
container.RegisterInstance<string>("MyConnectionString", connectionString, new ContainerControlledLifetimeManager());
// register the class that will use the connection string
container.RegisterType<MyNamespace.MyObjectContext, MyNamespace.MyObjectContext>(new InjectionConstructor(new ResolvedParameter<string>("MyConnectionString")));
var context = container.Resolve<MyNamespace.MyObjectContext>();
你可以把它連一步,有MyObjectContext的多個命名實例,每個實例使用自己的連接字符串到不同的數據庫。
謝謝,正是我需要的。 – Martin 2010-10-24 15:36:25