问题标签 [unity2.0]

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 投票
4 回答
6801 浏览

c# - Unity 的自定义对象工厂扩展

我正在使用 Unity IoC 容器,我需要拦截对某个基本接口的任何对 Resolve 的调用,并运行我自己的自定义代码来构造这些类型。

换句话说,在下面的示例代码中,当我调用 时container.Resolve<IFooN>(),如果它没有具体实现类型的实例,则调用MyFactoryFunction构造一个实例,否则我希望它返回缓存的副本。

标准 Unity 容器无法构造这些对象(更新:因为它们是 .NET 远程处理对象,因此本地计算机上的任何程序集中都不存在具体类),我不想预先创建它们并且将它们与 RegisterInstance 一起存储。

我假设我可以创建一个 Unity 扩展来执行此操作,但我想知道是否已经有可以借用的解决方案。

0 投票
1 回答
413 浏览

unity-container - Unity 2中的UnityContainerElement在哪里?

我在 Unity 1.2 中,使用以下代码:

但是,我不能在 Unity 2.0 beta2 中这样做,因为 Unity 2 beta2 中不存在“UnityContainerElement”类。

我怎样才能在新版本中做到这一点?

0 投票
3 回答
34762 浏览

.net - Unity 2.0:如何使用 Resolve 和 ResolverOverride?

我开始使用Unity做越来越多的工作。我注意到 Resolver 方法采用params参数ResolverOverride

有人可以给我一个例子,我可以如何使用ResolverOverride或指出我可以获得更多线索的其他来源。

0 投票
1 回答
967 浏览

c# - Unity 2.0 System.Collections.Generic.List

使用 Unity 2.0 xml 文件,我试图填充一个包含通用列表的对象。根据 Unity Configuration Schema,仅支持数组元素。有没有人尝试过使用统一来填充通用列表?

0 投票
1 回答
1341 浏览

.net - NServiceBus 与 Unity 2.0?

有人在 Unity 2.0 中成功使用 NServiceBus 2.0 吗?

我尝试针对 Unity 2.0 程序集编译 NServiceBus.ObjectBuilder.Unity.dll 的源代码,但由于新 Unity 中许多对象方法的签名已更改/删除,因此出现了几个编译时错误。

Udi Dahan在文档中说,附加任何容器就像实现IContainer. 但是当我查看 NServiceBus.ObjectBuilder.Unity 实现时,我发现还有很多工作要做。为什么会这样?

0 投票
2 回答
9757 浏览

c# - Unity 应用程序块,如何将参数传递给注入工厂?

这是我现在所拥有的

并得到它

我想将名称作为参数传递给工厂,以便能够使用名称解析用户对象;像这样的东西:

如何更改此案例的类型注册?

0 投票
1 回答
7728 浏览

c# - 在 WPF 中使用 Unity

我有 Unity 2.0 在 App.xaml.cs 中运行良好,可以在该类中注册和解析。

我的问题是关于最佳实践。

我有许多用户控件和其他类也需要解决一些相同的和新的接口 <-> 实现。问题是无法访问我在 App.xaml.cs 中创建的 Unity 容器。

我不能使用构造函数或属性注入来传递容器引用。

  1. 太多了(这是一个大项目)
  2. 用户控件是通过 xaml 添加的
  3. 项目中有几个非常松散相关的“模块”可以共享相同的容器配置。

我宁愿不从需要访问容器的每个对象中的配置文件重新创建容器。

当需要相同的容器作为同一程序集的各种“模块”中的服务时,是否有任何最佳实践建议?

谢谢。

0 投票
2 回答
3878 浏览

c# - IDisposable 对象的 Unity RegisterInstance

统一 2.0:

默认情况下,RegisterInstance 使用 ContainerControlledLifetimeManager。当 Unity 容器被释放时,它会在实例上调用 Dispose(如果是 IDisposable)。

就我而言,这不是我想要的。该实例由另一个类拥有和处置;Unity 应该只注入引用。所以我用:

Unity 文档(在Understanding Lifetime Managers 下)指出:

使用 RegisterInstance 方法注册现有对象会产生与刚刚使用 RegisterType 注册生命周期容器相同的行为。因此,在使用非默认生命周期管理器时,建议不要使用 RegisterInstance 方法注册现有对象,调用 RegisterInstance 的线程除外。

这是什么意思?

同一部分还指出:

如果您使用 RegisterInstance 方法注册了对象的现有实例,则容器会为对 Resolve 或 ResolveAll 的所有调用或当依赖机制将实例注入其他类时返回相同的实例,前提是满足以下条件之一:

  • 您已指定容器控制的生命周期管理器
  • 您已使用默认生命周期管理器
  • 您在使用不同的生命周期管理器时在注册实例的同一上下文中解析。

在将 RegisterInstance 与 ExternallyControlledLifetimeManager 一起使用后,我尝试在不同的线程中解决,并且它起作用了 - 我得到了单例实例。

我的代码与创建实例注册部分中的示例匹配。不过,我想确保我理解上下文警告。

需要明确的是,我总是希望 Unity 容器注入我注册的实例,而不考虑线程等,并且我希望 Unity 处理它。我这样做正确吗?

0 投票
2 回答
300 浏览

.net - Unity 2.0 松散依赖——dll复制

我有一个简单的问题,我认为有人会很快回答,但我试图自己找到答案但不能(也许只是运气不好)。

问题是,我在 VS2010 Ultimate 中有一个 .NET 4 解决方案,我想在其中利用 Unity 2.0。我有一些设计为独立的模块,我通过共享的 *.Contracts 程序集连接代码(例如,DAL 中的类实现 DAL.Contracts 的接口,而服务需要实现 DAL.Contracts 接口的类型)。

问题是,我必须将编译后的文件放入最终的输出目录。添加引用似乎很奇怪,毕竟我不想要引用(而且我知道没有它也可以完成)。将文件添加为带有“更新时复制”选项的链接也不好(无法区分调试和发布版本)。关于将已编译的组件复制到具有最顶层程序集的目录的最佳方法的共识是什么?

0 投票
1 回答
5384 浏览

c# - Unity - 如何为同一类型使用多个映射并注入到一个对象中

我正在使用 Unity 2.0,在下面的代码中,我试图在 Worker 对象中注入一个特定的工具。

我想使用以下代码。但是当然有一个错误“依赖关系的解决失败”。我相信我应该能够做这样的事情,但我很难弄清楚。

我知道这不起作用,但我将如何解决这个问题?

巴德开发