我在Windows窗體應用程序中使用了Unity DI。據工作至今解析相關的主要形式Program.cs中是這樣的:Windows窗體中帶有子窗體的Unity DI
static void Main()
{
IUnityContainer container = new UnityContainer();
container.AddNewExtensionIfNotPresent<EnterpriseLibraryCoreExtension>();
container.RegisterType<IAccountService, AccountService>();
container.RegisterType<IAccountRepository, AccountRepository>();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(container.Resolve <MainForm>());
}
我的問題是,當我的MainForm嘗試創建一個子窗體:
ChildForm childForm = new ChildForm();
childForm.Show();
我得到一個錯誤,因爲我試圖使用構造函數注入,我沒有傳入構造函數參數。我也試着用[Dependency]屬性使用setter注入,但那也不起作用。我應該如何做到這一點?我可以讓我的主窗體擁有所有的依賴關係,並將所需的對象傳遞給子窗體,但是如果我最終有許多子窗體,那麼主窗體就會變得混亂。
謝謝,我沒有意識到我可以使容器成爲program.cs的公共屬性並在我的表單中引用它。你的回答幫助我看到了它。 – flyingeagle
這種氣味非常像服務定位器 –