XuanchenLin/NanUI

[问题] 使用NanUI 如何使用服务依赖注入

hy999 opened this issue · 2 comments

hy999 commented

NanUI/Formium版本
NanUI/Formium Version
0.9.90

操作系统 / Windows Version

windows11
问题描述 / QUESTION
在使用NanUI中 怎么注入服务,比如efcore?

NanUI 内置了一个简单的 Container 用于存储各种对象和服务。

在 NanUI 应用启动配置中注入服务,在应用初始化后在任何地方使用 WinForimum.Runtime.Container 来使用这些服务。

例如:

注入服务。 可以根据实际请求选择使用 RegisterPerRequestRegisterSingleton 或者 RegisterInstance 方法来注入服务。下面的例子,注入 EFCore 的某个 Context,选择使用 RegisterPerRequest 来确保调用时获取到一个新的 DbContext 对象。

WinFormium.CreateRuntimeBuilder(app => {
    // ...
    app.Container.RegisterPerRequest<SomeDbContext>(service =>
    {
        return new SomeDbContext();
    });
    // ...
}).Build().Run();

使用服务。 在 NanUI 应用程序初始化以后可以在任意位置(UI进程或者渲染进程等)使用 WinFormium.Runtime.Container 对象来获取注入的服务。

// ...
using var dbContext = WinFormium.Runtime.Container.GetInstance<SomeDbContext>();

dbContext.SaveChanges();
// ...

如果处于 Formium 的派生类中,也可以使用 WinFormium.Runtime.Container 的别名属性 IoC 来使用容器中的各种方法。

hy999 commented

谢谢