问题标签 [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 投票
2 回答
1747 浏览

unit-testing - Ninject 等效于 Unity RegisterInstance 方法

Ninject 是否有统一的注册实例的等效方法。

我想创建一个模拟对象并注册它。

谢谢

0 投票
4 回答
13637 浏览

inversion-of-control - MEF vs. any IoC

Looking at Microsoft's Managed Extensibility Framework (MEF) and various IoC containers (such as Unity), I am failing to see when to use one type of solution over the other. More specifically, it seems like MEF handles most IoC type patterns and that an IoC container like Unity would not be as necessary.

Ideally, I would like to see a good use case where an IoC container would be used instead of, or in addition to, MEF.

0 投票
2 回答
972 浏览

unity-container - 使用 WPF 的 Prism 中的 Unity

在 Prism 中,我们是否可以在模块级别拥有另一个统一实例来注册特定模块中的类。这样我就不会在不同模块中加载具有如此多类的应用程序级别统一。

0 投票
2 回答
3057 浏览

c# - .Net RIA 服务:DomainService 需要无参数构造函数?

我在带有一些 Silverlight 组件的 ASP.Net 应用程序中使用 .Net RIA 服务的 7 月 CTP。我正在从 Silverlight 呼叫 RIA 服务。

当我尝试在我的域服务(一个 LinqToEntitiesDomainService 对象)中使用 Unity 和构造函数依赖注入时,出现了我的问题。Silverlight 应用程序现在抱怨没有无参数构造函数。

我不想有一个无参数的构造函数,我希望 Unity 来解析构造函数参数。这可能吗?难道我做错了什么?或者我应该找到另一种方法来注入我的构造函数参数?

这是我得到的错误:

0 投票
1 回答
2305 浏览

asp.net-mvc - ASP.NET MVC 和 Unity 1.2 容器问题

我正在尝试使用 Unity 容器来更轻松地对我的控制器进行单元测试。我的控制器使用一个构造函数,该构造函数接受一个存储库的接口。在 global.asax 文件中,我实例化了一个 UnityContainerFactory 并将其注册到 MVC 框架,然后注册存储库及其实现。我将 [Dependency] 属性添加到控制器的 CTOR 存储库参数中。这一切似乎都可以正常工作,只是偶尔会多次调用工厂的 GetControllerInstance(Type controllerType) 并将 null 参数作为 controllerType 传递。

对工厂的第一次调用是正确的,并且控制器类型“ProductsController”作为参数传入。但有时,在控制器的视图显示为空值后,工厂被调用了几次,我不知道为什么。当传递控制器类型的正确值时,“调用堆栈”对我来说是有意义的,但是当传递空值时,我不确定为什么或谁在进行调用。有任何想法吗?

该示例的代码和调用堆栈如下所示。

工作时调用堆栈

Test.DLL!Test.UnityHelpers.UnityControllerFactory.GetControllerInstance(System.Type controllerType = {Name = "ProductsController" FullName = "Test.Controllers.ProductsController"}) 第 23 行 C# Test.DLL!Test._Default.Page_Load(object sender = {ASP.default_aspx}, System.EventArgs e = {System.EventArgs}) 第 18 行 + 0x1a 字节 C#

在 controllerType 传递 NULL 时调用 Stack

Test.DLL!Test.UnityHelpers.UnityControllerFactory.GetControllerInstance(System.Type controllerType = null) 第 27 行 C#

首先我创建了一个 UnityControllerFactory

接下来,我在 global.asax 文件中添加以下代码来实例化容器工厂

该应用程序有一个控制器

0 投票
2 回答
5380 浏览

configuration - 再次关于 log4net 和 Unity IOC 配置

我已经在各个站点上遇到了一些这样的问题,并且答案似乎是由 l4n 官员针对 log4net“是”的轻量级包装器的价值(你不明白吗?)和类似的想法-令人难以置信的事实。

然而,似乎用户所要求的(这是我的问题)是如何将 log4net 对象模型适合流利的配置界面中的 registertype/registerinstance 序列。

这里的目标不是重新包装 l4n,而只是为了获取一个体面的引用,它不需要劫持流畅的流,因为它是。

可怜的 ejemplow,我想从 LogManger.GetLogger 方法中获取对 ILog 配置实例的引用,并尽早将其放入流畅的流中,以便将其注入我的下游对象的属性中。

因此,为了回应一个不耐烦的建议,我尝试以规范的方式创建一个普通的 ILog 实例:

因此,现在将这个引用添加到 Unity 容器并继续我的美好生活似乎是微不足道的(在真正意义上的轻松)。

但是,RegisterInstance 方法的签名需要“类型”而不是接口。

对于那些没有搜索过 log4net 对象模型的人来说,afficiananderos 是正确的:l4n 是一个“包装器”,您无法了解 Log 事物的实际“类型”。

所以现在我必须测试。你知道这意味着什么,它可能需要一分钟,但更可能需要一到四个小时(类似“小时”和“四”的拼写在现实生活中绝非巧合)。

但是,以下内容(减去关于规范设置的省略部分)确实有效:

因此,原始 Log 对象的哈希码和注入到我的奇妙的小 Context 对象的属性中的 Log 对象是相同的。

然而...

注入过程要求我通过其接口公开 Context 对象的 Log 属性,这意味着它不能再是静态对象。log4net ILog 对象是否是静态的似乎是决定它是否可序列化并且可以在程序集之间混编而没有戏剧性的“运行时将变得不稳定”警告的决定因素(这仅对 Matrix 粉丝真正有意义)。

尽管没有被阻止,但我感到沮丧,但我使用了 Resharper 的漂亮“带有支持字段的属性”,并将支持字段设置为静态,而 Interface 属性保持非静态。好吧,它构建并且测试运行绿色。

所以我什至做了一个重建,它奏效了。所以也许当这冒泡到集成测试时,我会偷偷溜过 log4net 不是可序列化的崩溃。

所以也许这会有所帮助

谢谢

斯塔托

0 投票
1 回答
353 浏览

linq-to-sql - linq2sql 使用依赖注入?

有谁知道如何使用 linq2sql 进行依赖注入。这是我的情况..

我会在这里尽我所能解释。

我有一个基类,它有一个 DBML(linq2sql)和类等。这个 DBML 对多个项目来说是常见的。。每个项目都有自己的 DBML,但是我正在使用的通用 dbml 中的所有表等在基类中 - 这有意义吗?!

我的每个项目都通过继承基类并扩展它来创建一个新类......但是我当然需要重新注入我的 dbml,因为我在项目中专门使用的 dbml 具有 COMMON 中的所有功能,然后是一些

我在这里有点迷路..任何人都知道如何做到这一点..我希望我解释得足够好:-)

我希望使用统一或类似的东西,由 linq2sql 创建的类似乎没有实现接口……这会是 DI 的问题吗?

谢谢

0 投票
1 回答
751 浏览

.net - 使用一个配置文件为多个应用程序配置统一

我有两个密切相关的应用程序都使用 Unity IoC 容器。它们有一些共同的自定义类型,但不是全部。目前我有两个配置文件有很多重复。我希望只有一个 Unity 配置文件来管理它们。

然而,由于并非所有类型都存在于两个应用程序中,Unity 并不满意。我想要的是一种告诉 Unity 不要尝试注册/实例化配置文件中的类型的方法,除非容器被要求提供它们。

我可以想到几个解决方案,但由于我是 Unity 新手,我不想猜测/重新发明。

是的,它必须是 Unity。目前。

0 投票
2 回答
2231 浏览

.net - Aop、Unity、拦截器和 ASP.NET MVC 控制器操作方法

使用 log4net,我们希望记录对 ASP.NET MVC 控制器操作方法的所有调用。

日志应包含有关传递给控制器​​的任何参数的信息。

我们希望通过 Unity使用带有拦截器的 AoP 方法,而不是在每个动作方法中手动编码。

我们已经将它与其他一些使用接口的类一起使用(使用InterfaceInterceptor)。但是,我们不确定如何继续使用我们的控制器。我们是否应该稍微修改它们以使用接口,还是有更简单的方法?

编辑

VirtualMethodInterceptor似乎是正确的方法,但是使用它会导致以下异常:

0 投票
1 回答
1230 浏览

xml - 使用泛型的 Unity XML 配置

对 Unity XML 配置和泛型有点头疼。我有这些文件:

我想使用 Unity XML 配置将 Order Repository 注入 DispatchOrderProcess 类。到目前为止,我有这样的事情: