[问题] 使用NanUI 如何使用服务依赖注入
hy999 opened this issue · 2 comments
hy999 commented
NanUI/Formium版本
NanUI/Formium Version
0.9.90
操作系统 / Windows Version
windows11
问题描述 / QUESTION
在使用NanUI中 怎么注入服务,比如efcore?
XuanchenLin commented
NanUI 内置了一个简单的 Container 用于存储各种对象和服务。
在 NanUI 应用启动配置中注入服务,在应用初始化后在任何地方使用 WinForimum.Runtime.Container 来使用这些服务。
例如:
注入服务。 可以根据实际请求选择使用 RegisterPerRequest 、 RegisterSingleton 或者 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
谢谢