问题标签 [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 回答
2099 浏览

asp.net-mvc - 带有 Spring.NET 和 ModelBinder 的 ASP.NET MVC

我正在做一个使用 ASP.NET MVC 中的 Spring.NET IoC 功能的演示。这有点像 www.asp.net 网站上的结对编程视频教程中介绍的 MyBlog 应用程序。我已经使用 Microsoft 的 Unity 框架完成了相同的演示,现在想试用 Spring 容器。为此,我实现了一个简单的 IControllerFactory,它首先像这样创建 Spring 对象工厂:

接下来它从该工厂获取控制器,如下所示:

(为简化起见,删除了错误处理)。

现在在我的 HomeController 的某个地方,我有这样的动作:

这是 AddEntry.aspx 视图的一部分,它定义了条目参数的编辑器(非常基本的东西):

现在是这样:当我使用 Unity IoC 时,它就像一个魅力。“entry”参数从我的表单中反序列化,就像它应该和行一样

完成没有问题。

但是,当我切换到 Spring.NET 对象工厂(如上所述)时,事情开始变得疯狂。首先,参数“entry”变为空,因此引发异常。为了跟踪可能出现的问题,我实现了一种自定义 IModelBinder,如下所示:

当我使用 Unity 框架来到这里并从 bindingContext 向下钻取到 HttpRequest 时,我看到 Request.HttpMethod 是“POST”并且 Request.Form 已正确填充。当我使用 Spring.NET 做同样的事情时,方法是“GET”并且 Request.Form 是空的。然而,当我在这两种情况下进入我的控制器操作 (AddEntry) 并深入到 Request 时,我看到 Request.HttpMethod 和 Request.Form 具有它们正确的值。

现在的问题是如何使用 Spring.NET 修复该版本,使其与使用 Unity 框架的版本一样工作?

0 投票
8 回答
55095 浏览

c# - 企业库 Unity 与其他 IoC 容器

与其他 IoC 容器(Windsor、Spring.Net、Autofac ..)相比,使用 Enterprise Library Unity 的优缺点是什么?

0 投票
1 回答
687 浏览

.net - 序列化顺序和 Unity 问题

我有一个使用 XML 和自定义序列化程序的应用程序,并且最近使用 Unity 1.2 添加了一些 DI 以在我的类中设置两个属性。

现在,当我对类进行序列化时,Unity 设置的属性首先被序列化,然后是所有其他属性。

因此,如果 Unity 设置了类属性 2 和 3,则序列化类按以下顺序出现:23145

对于 XmlSerialiser,我可以使用 XmlElement 属性来设置顺序,但是我的自定义序列化器仍然以错误的顺序输出类,并且它的长度格式是固定的,所以顺序很重要。

有谁知道在仍然使用 Unity 的同时让我的课程按顺序序列化的方法?

谢谢

代码示例类

统一配置

构建 HeaderDocument 时,我调用

我不希望修改自定义序列化器,目前我刚刚将属性 1 添加到 Unity 配置中,因此我可以进行一些测试。

但我真正想知道的是,为什么 Unity 填充的属性与任何其他方法设置的属性的处理方式不同。(反射、构造函数或属性设置器)。

0 投票
1 回答
504 浏览

.net - 将 Unity 容器信息导出到 xml 配置

在 Microsoft Unity 中,您可以从现有 XML 配置配置容器,但有没有相反的方法?从初始化的容器导出相应的 XML 配置?

0 投票
3 回答
545 浏览

c# - 如何在 .NET 应用程序中松散耦合数据库列?

我有一个几乎相同的数据库的两个版本。下面我创建了一个示例表来演示基本差异,即 ID 列已从 Integer Identity 更改为 GUID 并更新了各种属性,在示例中存档已替换为 readOnly 并隐藏:

旧版:

新版本:

我需要能够使用诸如 NHibernate 之类的 O/R 映射器来连接到这些数据库版本中的一个或其他。我希望能够通过配置文件中的设置告诉应用程序使用哪个版本。

我最初的计划是为业务逻辑创建一个通用接口,并使用 Unity 等 IoC 容器在配置文件中的相关具体类之间进行交换。

以下是我为测试该理论而创建的代码示例:

谁能建议这是否可行(特别是使用 Unity 和 NHibernate),如果可以,如何创建相关的 NHibernate 映射文件?

或者,任何人都可以使用任何其他方法或其他 IoC 和 O/R 映射工具(商业或开源)提出任何解决问题的方法吗?

非常感谢,

保罗

0 投票
3 回答
6835 浏览

.net - 解决类而不使用 Castle Windsor 注册它们

采取以下无用程序:

UnityContainer 将返回一个 Program 实例,而 Windsor 容器将抛出 ComponentNotFoundException。

我可以看到这两种行为的论据并且不介意我最终得到的结果,但是 Prism V2 Drop 8(撰写本文时的最新版本)在内部依赖于 Unity 行为,请求尚未注册的类。

与其为 Prism 找到并注册所有这些类,不如让 Windsor 表现得像 Unity。我在谷歌上没有找到任何可以帮助我做到这一点的东西(尽管我的术语可能是错误的)而且温莎文档非常糟糕......

任何人都可以提出解决这个问题的方法吗?

0 投票
4 回答
10528 浏览

c# - 在 Unity App.Config 文件中包含一个泛型类

我有一类类型ISimpleCache<IBrokeredDataObject>,我想在 App.Config 文件中添加为类型别名(然后是类型)

线

由于 <> 显然是错误的,但是我不相信逃避它们;

也是正确的。

我目前正在拆分我的代码以使用 Unity,因此距离可编译的代码库太远,无法快速测试,并希望在这里得到一些确认。

0 投票
2 回答
15281 浏览

c# - Unity InjectionConstructor 属性是什么?

什么是 Unity InjectionConstructor 属性以及它是如何工作的?

0 投票
8 回答
10708 浏览

.net - Unity 框架 DependencyAttribute 仅适用于公共属性?

我试图在我的代码中清理一些可访问性的东西,并且无意中破坏了 Unity 依赖注入。过了一会儿,我意识到我标记了一些我不想在我的 DLL 之外暴露给内部的公共属性。然后我开始遇到异常。

因此,似乎在 Unity 中使用 [Dependency] 属性仅适用于公共属性。我认为这是有道理的,因为内部和私有道具对 Unity 程序集不可见,但是拥有一堆你永远不希望任何人设置或能够设置的公共属性感觉真的很脏,除了 Unity。

有没有办法让统一设置内部或私有属性?

这是我希望通过的单元测试。目前只有公共道具测试通过:


更新:

我注意到调用堆栈来设置传递的属性:

因此,为了至少使内部版本正常工作,我将这些添加到我的程序集的属性中:

然而,没有任何变化。Unity/ObjectBuilder 仍然不会设置内部属性

0 投票
2 回答
5262 浏览

inversion-of-control - 测试类型是否已在 Unity 中注册

我是否可以在不调用 Resolve 并捕获异常的情况下测试类型是否已在 Unity 容器中注册?