问题标签 [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.

0 投票
0 回答
409 浏览

dryioc - 带有 MediatR 的 DryIoc:IAsyncRequestHandler 解决异常

DryIoc 似乎无法解析 IAsyncRequestHandler。
它抛出
DryIoc.dll 中发生类型为‘DryIoc.ContainerException’但未在用户代码中处理的异常附加信息:无法解析 MediatR.IRequestHandler。未找到服务注册和 Rules.FallbackContainers 数量:0 和数量Rules.UnknownServiceResolvers: 0 "
这很奇怪,因为它应该解析 IAsyncRequestHandler。
另一个奇怪的事情是代码在 Net.Fiddle 上运行良好(查看这里

我在 Windows 10 Home、MediatR 3.0.0、DryIoc.dll 2.10.0、.Net 框架 4.5(也尝试使用 4.6.1)中使用 VS 2015 Update 3。

我是否以错误的方式注册它?这应该很简单。

相关:注册所有处理程序的最佳方法是什么?

0 投票
1 回答
993 浏览

dryioc - MediatR 在预期单个时获取多个处理程序实例

我正在使用通用类型请求和处理程序。
如果我有多个 IAsyncRequestHandler DryIoc 正在解析多个实例,而不是单个实例,则会导致 MediatR 引发异常。
我怎么解决这个问题?请在此处

的 Net Fiddle 检查此行为。(注意,在这个例子中Generic Type只是用来证明这一点——MediatR抛出异常——在我的生产代码中,Generic Types实际上是需要的)

0 投票
1 回答
2577 浏览

dryioc - DryIoc RegisterMany implementations of interface

Looking at the wiki for DryIoc, it seems the examples show the reverse of what I need, and I was wondering if the reverse is possible?

Wiki (partial example)

I would like to do the following

However that gives this error: "Registering abstract implementation type X when it is should be concrete. Also there is not FactoryMethod to use instead."

Is this possible out of the box or do I need to implement it myself by getting all implementations of an interface from an assembly and loop over it and register it accordingly?

UPDATE

I see that this example was maybe a little to simple for my case, but for the example above, the code @dadhi provided works great.

Here is a bit more "complex" case

Would something like this be doable out of the box? Or do I need to make my own extension methods etc? It wouldn't be that much of a trouble really, and I would probably be done with it in a short time, however I would like to know for future references and to learn the DryIoc container. Thnxs in advance. :)

0 投票
1 回答
5410 浏览

c# - DryIoC - 在解析时指定一些构造函数参数

DryIoC 面临着一个相当令人费解的情况。

好吧,实际上,这是我第一次使用 IoC 容器,所以我可能只是误解了一切:从依赖注入到 IoC 容器,再到 DryIoC 本身。

尽管如此,我还是一名专业程序员已经有一段时间了,我有不错的谷歌搜索技能,我什至找不到其他人暴露的类似问题。

假设我有一个公开这些接口的类库......

...以及另一个实现上述接口的类库。

然后是第三个图书馆,里面有我需要的其他东西:

最后,一个使用上面所有库的类库来实现咖啡研磨机(我喜欢咖啡!)

根据(例如)配置文件,一个应用程序可能需要多个研磨机,每个都有自己的名称。

因此,我希望能够loggerName在解析时指定,如下所示:

换句话说,我如何告诉 DryIoC 一个或多个构造函数参数不是依赖项,而是必须在解析时指定?

0 投票
1 回答
577 浏览

dependency-injection - 如果您需要相同接口的不同实例,如何设置 DryIoc 容器?

我正在尝试将 DryIoc 与 .NET Web API 2 站点一起使用来创建我的控制器。我有一种情况,我的控制器需要一个处理器,而处理器需要一个存储类的两个实例。以下是基础知识:

所以,我需要让我的 IOC 容器 (DryIoc) 使用两个不同的接口类IStorage。所以,我想要为这样的事情设置 IOC:

但是,正常的注册方式是行不通的:

我是依赖注入容器的新手,大多数文档都非常抽象;我不是在摸索他们。这是怎么做到的?

0 投票
0 回答
109 浏览

dryioc - 在测试中缓存 DryIoc 容器

在分析单元/集成测试时,我看到主要的 CPU/时间贡献者之一是 DryIoc 委托编译。当前测试为每个测试重新创建并重新初始化容器。基本容器初始化始终相同,不同之处在于可以覆盖 sode deps 的测试。所以我想出了一个想法,尝试以某种方式在测试之间共享容器会很棒。理想情况下,我希望有一个已初始化的容器并编译所有委托,然后在测试中创建类似于范围/子容器或任何东西的东西,测试可以在其中进行覆盖。

唯一的问题是我们有一些单例,当然,每次新测试都应该创建单例,所以我不确定如何以及是否可能。

理想情况下,在测试之后,我们需要告诉容器丢弃所有已初始化的单例,并在下次解决引用时重新创建它们

谢谢问候雅霍尔

更新:如果我将使用 Reuse.InCurrentScope 而不是 Reuse.Singleton plus 将为每个新测试创建/使用新范围,我是否可以准确地实现我想要的?

0 投票
1 回答
809 浏览

c# - 将 DryIoc 与依赖项和原始值一起使用

我正在注册要为接口创建的实现。此实现构造函数具有三个参数:

我已经像这样注册了 ISqlConnection:

但是,当我像这样注册 ProfileImageService 时:

我收到以下错误:

使用(可能注入)项 Abc.Data.TsqlConnection 需要 Message=State。要启用项目使用,您可以指定 container.With(rules => rules.WithItemToExpressionConverter(YOUR_ITEM_TO_EXPRESSION_DELEGATE))。

我已阅读此SpecifyDependencyAndPrimitiveValues并尝试像他们一样对其进行修改,但他们的示例仅显示了原语或依赖项,而不是两者,而且我找不到它们在没有编译错误的情况下混合的语法。谁能给我一些关于如何注册这个实例的指导,指定两个字符串的值和依赖项的值?

0 投票
1 回答
179 浏览

xamarin.android - XamarinAndroid Register Singleton 中的 DryIoc 正在工作,但正常的 Register 不起作用

我有一个从 IMyGameView 接口继承的 MyGameView 类和从 OpenTK 继承的 AndroidGameView 类。

所以,如果我用单例注册 MyGameView 类,它可以工作,但如果我注册为正常注册,应用程序不会回答并且输出文本毫无意义。

类和接口:

Container.Register< IMyGameView, MyGameView> (Reuse.Singleton); 在职的

Container.Register< IMyGameView, MyGameView>(); 不工作

有人有什么主意吗?

0 投票
1 回答
518 浏览

c# - Dryioc and multiple threads

I want to use dryioc to manage dependencies required by multiple threads. I want to start threads passing each a job which requires dependencies to be resolved by ioc. Not sure what this should look like ideally any assistance appreciated.

0 投票
2 回答
1300 浏览

xamarin - 如何将 Xamarin.Forms+Prism 应用程序从 Unity 迁移到 DryIoC?

我正在尝试将容器更改为 Xamarin.Forms + Prism 应用程序的 DryIOC。Visual Studio 正在无错误地编译和启动应用程序,但是当应用程序启动时,它不会触发 App.OnInitialized 方法,使应用程序保持在空白屏幕上。

我做了什么?

  1. 从 Android 和 Shared 项目中删除了 Prism.Unity、Unity 和 Microsoft 相关包
  2. 将 DryIoc.dll (v2.10.7) 和 Prism.DryIoc.Forms (v6.3.0.1) 包添加到 Android 和 Shared 项目
  3. 将 App.xaml 中的 prism xmlns 更改为指向:

    xmlns:prism="clr-namespace:Prism.DryIoc;assembly=Prism.DryIoc.Forms"

  4. 将 MainActivity.cs 中的 AndroidInitializer 类更改为:

    public class AndroidInitializer : IPlatformInitializer { public void RegisterTypes(IContainer container) {} }

我使用 Prism DryIoC 模板创建了一个空白应用程序,它运行良好。此外,我将 App.xaml、App.xaml.cs 和 MainActivity.cs 文件与我的项目中的文件进行了比较,一切正常。

我还可以做些什么?