问题标签 [dryioc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
dryioc - 如何在类库的主应用程序中使用 Dryioc 容器
我是dryioc的新手,所以请原谅我的无知:)
我想了解以下正确方法是什么,
创建一个创建 Dryioc 容器实例的控制台应用程序。在容器中注册一个记录器(作为单例)。然后从要在控制台应用程序中使用的类库(单独的项目)中实例化一个类,并能够从类库中引用容器(主应用程序)以获取记录器的实例。因此类库将利用在控制台应用程序中注册的任何记录器。
我不希望将容器作为类库中构造函数的一部分传递。
感谢您的任何帮助。
xamarin - PrismDryIoc.Forms AutowireViewModel 不工作
我创建了一个 Prism Unity 应用程序(来自 prism 扩展包 - 非常好),添加了 2 个新视图并在视图之间设置了基本导航。这一切都很好,没有任何问题。
我真正想要的是使用 DryIoc(公司政策)。所以我开始删除统一包(Unity 和 Prism.Unity.Forms)并安装 DryIoc 包(DryIoc 和 Prism.DryIoc.Forms)。修复了 App.xaml 以使用正确的命名空间 (xmlns:prism="clr-namespace:Prism.DryIoc;assembly=Prism.DryIoc.Forms"),并且还修复了所有其他引用以使用 DryIoc 而不是 Unity 引用。
这一切都编译并运行,没有任何例外。但是当我调试时,很明显 AutoWireup 没有按预期工作(至少正如我所期望的那样)。ViewModel 的构造函数(或任何其他位置)中的断点未命中,并且 Title 绑定未通过。
是否有我缺少的配置/设置或参考?
我的代码:App.xaml:
应用程序.xaml.cs:
MainPage.xaml:
MainPageViewModel.cs:
如上所示,我使用 PageName 和 PageNameViewModel 的标准命名约定,并将 AutoWireUp 设置为 True。
这一切都适用于 Unity,但我在 DryIoc 中遗漏了一些东西......但什么让我逃脱了。
我已经搜索了整个项目,Unity 没有任何参考或痕迹。
任何帮助深表感谢。
c# - DryIoc 用函数解析
我试图让对象作为Func<>
. 但我不知道该怎么做。
例如,这里我有一个变量(函数参数)lazyInt
(可能是某种长时间运行计算的结果),并且在以后可能使用之前不需要该结果。
我尝试了一些使用ServiceInfo.Of
等,但暂时没有成功。如何做呢?
c# - 使用 DryIoc 创建具有多个服务注册的单例
问题
我正在尝试使用 DryIoc 注册一个单例,但容器正在返回我的单例类的多个实例。单例类注册为多个不同服务接口的实现类型。当 DryIoc 请求上述任何服务接口时,我希望得到我的单例类的相同实例,但这没有发生,我不知道为什么。
一个例子
这是我正在尝试做的一个基本示例。在此示例中,我有一个类,Foo
我想将其用作接口IFoo
和IBar
. 换句话说,当从容器中解析出IFoo
或时IBar
,我希望Foo
返回相同的实例。
服务接口
单例(实现)类
考试
深思熟虑的解决方案
我考虑过使用 DryIoc 的RegisterInstance
方法,但这需要手动创建类,我试图避免这种情况,因为与上面的简化示例不同,现实世界的类有它自己的依赖项。
c# - 无法解析 XXX。没有找到服务注册并且 Rules.FallbackContainers 的数量:0 和 Rules.UnknownServiceResolvers 的数量:0
我的应用在最后一行出现错误:
收到错误:
无法解析 XXX。没有找到服务注册并且 Rules.FallbackContainers 的数量:0 和 Rules.UnknownServiceResolvers 的数量:0
我的代码:
c# - DryIoC约定映射如何?
我想将 DryIoC 容器设置为默认约定映射(例如:将 IFoo 解析为 Foo 并将 IBar 解析为 Bar)。
如何实现?
dryioc - DryIoc,所有类 Singleton 和 DbContext 作为 WebRequest
我正在尝试创建完全单例应用程序(Web 和控制台)。但是实体 DbContext 应该在 web 上使用 PerWebRequest。
我应该如何在容器上注册它以支持这一点?我知道一旦类被初始化为单例,我将在内存上的单个实例上运行,所有注入的类也作为单例。
以下代码是我对所有 Web 应用程序和控制台应用程序的容器初始化。- 在控制台中运行时我应该如何注册?- 当在 Web 上运行并且 Owin 调用启动事物时,有时我需要解析要在身份验证中使用的对象,但 Owin 在“无上下文”环境中运行。如何检测和使用它?
dryioc - DryIOC 装饰器和 InResolutionScopeOf
我正在尝试设置一个依赖项,我希望将其注入到基本接口(MediatR 处理程序)的解析范围中:
然而,这个接口是用一些装饰器设置的,它们依赖于 IActionHandler,而 IActionHandler 又依赖于 DbContext:
我在尝试解决该 IActionHandler 的实现时遇到异常,因为它无法注入 DbContext,因为它似乎在范围内不可用。
我尝试将 IActionHandler 设置为 InResolutionScopeOf 的目标,但是在我的 IAsyncRequestHandler<,> 中无法解析 DbContext。
我需要每个 DbContext 实例在源自 IAsyncRequestHandler<,> 解析的任何装饰器或 IActionHandler 中可用,并且该实例也应该注入到 IAsyncRequestHandler<,> 实现中。
关于如何实现这种注入的任何想法?
谢谢
c# - DryIoc:无法弄清楚如何注册 IDisposable Decorator 对象
我正在尝试围绕IDisposable
数据库上下文设置一个装饰器:
如果我取消注释最后一行,程序会抛出:
DryIoc.ContainerException: Registered Disposable Transient service Lib.DI.IContext with key {no key} and factory container won't be disposed by container. DryIoc does not hold reference to resolved transients, and therefore does not control their dispose. To silence this exception Register<YourService>(setup: Setup.With(allowDisposableTransient: true)) or set the rule Container(rules => rules.WithoutThrowOnRegisteringDisposableTransient()). To enable tracking use Register<YourService>(setup: Setup.With(trackDisposableTransient: true)) or set the rule Container(rules => rules.WithTrackingDisposableTransient())
à DryIoc.Throw.It(Int32 error, Object arg0, Object arg1, Object arg2, Object arg3)
à DryIoc.Container.ThrowIfInvalidRegistration(Factory factory, Type serviceType, Object serviceKey, Boolean isStaticallyChecked)
à DryIoc.Container.Register(Factory factory, Type serviceType, Object serviceKey, IfAlreadyRegistered ifAlreadyRegistered, Boolean isStaticallyChecked)
à DryIoc.Registrator.Register[TService,TImplementation](IRegistrator registrator, IReuse reuse, Made made, Setup setup, IfAlreadyRegistered ifAlreadyRegistered, Object serviceKey)
怎么Setup.Decorator
搭配trackDisposableTransient
?