gpt4 book ai didi

c# - 带有子窗体的 Windows 窗体中的 Unity DI

转载 作者:行者123 更新时间:2023-11-30 15:01:11 25 4
gpt4 key购买 nike

我在 Windows 窗体应用程序中使用 Unity DI。到目前为止,它正在解决对 program.cs 中主窗体的依赖关系,如下所示:

    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();

我收到一个错误,因为我正在尝试使用构造函数注入(inject),但我没有传入构造函数参数。我还尝试使用带有 [Dependency] 属性的 setter 注入(inject),但这也不起作用。我应该如何做到这一点?我可以让我的主窗体具有所有依赖项,并将所需的对象传递给子窗体,但如果我最终有很多子窗体,那么主窗体将变得困惑。

最佳答案

为了让 Unity 注入(inject)构造函数参数,您需要使用容器来解析子表单。所以你需要在某处保存对容器的引用,然后调用:

ChildForm childForm = container.Resolve<ChildForm>();

这将允许 Unity 评估 ChildForm 构造函数并注入(inject)适当的依赖项。

关于c# - 带有子窗体的 Windows 窗体中的 Unity DI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14634773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com