问题标签 [unity-container]

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 投票
1 回答
224 浏览

inversion-of-control - Unity 中的级联分辨率

假设我有两种类型,TypeA 和 TypeB,我想在 Unity 中注册。TypeB 依赖于 TypeA 所以我想通过构造函数注入将 TypeA 注入到类型 B 中。所以我想写一些类似下面的东西,让 Unity 足够聪明地为我级联分辨率:

如何告诉 Unity 解析 TypeA 并注入 TypeB?

如果使用配置文件,看起来这是可能的,但我不知道你将如何以编程方式进行:

在此先感谢您的任何建议!


编辑:所以,Unity 确实为我处理了这个问题。但是,我认为我的问题是我有一个有两个构造函数的类:

似乎 Unity 无法知道使用哪个构造函数。第一个构造函数用于单元测试,第二个应该在运行时使用。Unity 在这方面遇到了麻烦。

0 投票
3 回答
2915 浏览

.net - unity拦截和构造函数

我想在 Unity 中使用拦截,这是我的代码:

如果 T 是一个带有带参数的构造函数的类(一个空的构造函数),当我调用 Resolve 时会引发异常,否则它会起作用。如何拦截具有非空构造函数的类型?

更新

此代码有效,但如果我想使用带参数的构造函数怎么办?

我试过这个:

在我的代码中:

我回来了,和之前一样的例外......

0 投票
3 回答
816 浏览

.net - Unity/Spring 或 System.Configuration 进行配置?

如果您已经在项目中使用 Unity,那么编写传统的配置类有什么意义吗?

这样做似乎是一项额外的工作,但好处是更多特定于域的 XML 标记名称和更简洁的 XML。但是,当您在两者之间划清界限以及一致性时,问题就变成了。

过去,在将 Spring.NET 用于 IoC 时,我混合使用了两者,但我想知道这样做是否只是降低了配置的一致性级别。当然,如果您还没有使用 IoC/DI 库,那么仅将它们用于运行时配置似乎有点过头了,但如果您是,会采取什么方法?

0 投票
7 回答
11656 浏览

c# - 你如何协调 IDisposable 和 IoC?

我终于在 C# 中围绕 IoC 和 DI 进行了研究,并且正在努力解决一些问题。我正在使用 Unity 容器,但我认为这个问题适用范围更广。

使用 IoC 容器来分配实现 IDisposable 的实例让我大吃一惊!你怎么知道你是否应该 Dispose()?该实例可能只是为您创建的(因此您应该 Dispose() 它),或者它可能是一个其生命周期在其他地方管理的实例(因此您最好不要)。代码中没有告诉你,事实上这可能会根据配置而改变!!!这对我来说似乎是致命的。

任何 IoC 专家都可以描述处理这种歧义的好方法吗?

0 投票
4 回答
8952 浏览

c# - unity【依赖】注入与继承

我的问题如下:我有一个名为 ApplicationController 的基本控制器(ASP.Net MVC 控制器),我希望我的所有控制器都继承自它。这个基本控制器有一个 ILogger 属性,用 [Dependency] 属性标记。(是的,我知道我应该使用构造函数注入,我只是对这个属性感到好奇)。

我创建了容器,注册了类型,更改了默认工厂,一切都很好。问题是当我尝试在派生控制器中使用我的 Logger 属性时,它没有得到解决。

我究竟做错了什么?为什么容器在创建派生控制器时不解析基类依赖?

代码示例:


应用控制器:

派生控制器:

Unity控制器工厂:

Global.asax.cs 示例:


我对 Unity 很陌生,所以也许我做错了什么。

谢谢,阿米。

0 投票
1 回答
4333 浏览

c# - Unity 拦截和异常

我目前正在处理一个问题,我有很多 iterfaces 及其实现都是用统一创建的。这些类包含一些定期抛出异常的方法,我想围绕这些类创建一个动态代理,这样我就可以捕获方法中发生的所有异常,并在其他地方处理它们。

当我在玩 Unity 时,我想知道是否可以使用 Unity Interception 来完成这样的事情。

即创建一个TransparentProxyInterceptor 并在这些方法的invocatino 周围包装一个try-catch 块。这是可能的还是我走错了方向?谢谢

0 投票
1 回答
981 浏览

c# - 在 CAL 中,如何获取对模块实例的引用?

我有这个使用 CAL 的应用程序。所有的模块都派生自一个特殊的类,ModuleBase它有一个抽象方法,比如说ApplySecurity在每个模块中实现。

好的,我在引导程序中加载模块,在我调用之后bootstrapper.Run(),我想访问所有加载的模块并调用这个ApplySecurity方法。

我试过这个:

但这正在制作模块的新实例,我想引用已经初始化的那些。

我希望我已经足够清楚了,

特奥多尔。

0 投票
2 回答
794 浏览

asp.net-mvc - 最佳实践 - 在 Asp.net MVC 中跨层共享 UnityContainer?

我有一个 UnityContainer,它在运行时在 MVC Web 应用程序的 global.asax 文件中获取它的配置信息。

我在另一个程序集中也有需要访问此容器的服务,以便他们可以手动执行解决方案。

我怎样才能最好地分享这两个?我不想在我的数据程序集和 MVC 之间有引用,但我希望数据程序集能够访问由 Web 应用程序配置的 UnityContainer。

我想知道在这种情况下其他人在做什么。

0 投票
3 回答
2137 浏览

asp.net-mvc - MVC/Unity - 如何将依赖项注入自定义 FilterAttributes?

我有一个HandleErrorAttribute扩展的习惯FilterAttribute

如何让 Unity 在注入控制器依赖项本身的同时将依赖项注入此属性?

0 投票
2 回答
189 浏览

.net - Unity新手问题

我是第一次尝试使用 Unity,我想我可能咬得比我能咀嚼的多。我们有一个 n 层应用程序,它有一个包含几个抽象类型的基础库,然后在它之上有几个特定于业务场景的库和具体类型。例如:抽象类型lead 有两种实现,一种在NewAutomotiveLibrary 中称为NewAutomotiveLead,另一种在AutomotiveFinanceLibrary 中称为AutomotiveFinanceLead。在基本库中,我们有一组适配器,它们对基本类型(如 Lead)执行逻辑。

我第一次尝试使用 Unity 返回一个接口 ILeadDuplication,当我在 ILeadDuplication 上调用 resolve 并传递“NewAutomotive”或“AutomotiveFinance”的字符串值时,该接口在解析时返回 NewAutomotiveLeadDuplication 或 AutomotiveFinanceLeadDuplication 的实例(在容器上调用 RegisterType 时映射的名称)。像这样:

注意:这是为了说明,因为库对 ILadDuplication 的创建类一无所知,实际注册需要在配置文件中完成。

虽然这一切都很好,但我需要更进一步。调用 resolve 时,我需要能够传入 Lead 类型的参数,它是 NewAutomotiveLead 或 AutomotiveFinanceLead 的基本类型。

我需要知道 Unity 是否有可能以某种方式神奇地查看特定于具体实例 AutomotiveFinanceLead 的属性,例如 Lead 上不存在的“GrossMonthlyIncome”,并将其分配给新创建的 AutomotiveFinanceLeadDuplication 实例属性 GrossMonthlyIncome。

我实际上希望能够针对基础库中的 ILeadDuplication 实例执行一组通用逻辑,即使生成的实例和映射的属性对它不熟悉。

谢谢!