- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想显式“释放”Unity 解析的对象实例。我希望 Teardown 方法应该完全用于此目的,所以我尝试了这样的方法:
container.RegisterType(typeof(IMyType), typeof(MyType),
new MyLifetimeManager());
var obj = container.Resolve<IMyType>();
...
container.Teardown(obj);
MyLifetimeManager
将对象实例存储在HttpContext.Current.Items
中。我预计Teardown
方法将调用RemoveValue
在生命周期管理器上并释放 MyType 实例和生命周期管理器实例。这不起作用。首先RemoveValue
没有被调用,如果我再次调用 Resolve<IMyType>
我将获得先前解决的实例。
应该做什么Teardown
方法呢?尽管有生命周期管理器,我如何才能释放对象?
编辑:
如果Teardown
不释放实例,谁释放?谁来电RemoveValue
终身经理?
最佳答案
Unity TearDown 不会做任何开箱即用的事情。您不需要从 HttpContext.Current.Items 中删除,因为它将在请求结束时自动清除。您可能想要做的是对存储在那里的任何 IDisposable 对象调用 Dispose。您可以从 Global.asax 中的 EndRequest 执行此操作:
foreach (var item in HttpContext.Current.Items.Values)
{
var disposableItem = item as IDisposable;
if (disposableItem != null)
{
disposableItem.Dispose();
}
}
关于.net - UnityContainer.Teardown 方法应该做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4933388/
我有这个 IoC 类: public static class IoC { private static IUnityContainer container; private stat
作为关于 unity 的基本演示的一部分,我创建了以下控制台应用程序(有点冗长): IUnityContainer container = new UnityContainer();
我有一个带有内部构造函数的类,想从 Unity (2.0) 中解析它。 public class MyClass { internal MyClass(IService service) {
我有这个代码: 1: IUnityContainer container = new UnityContainer(); 2: container.LoadConfiguration(); 第 1 行
UnityContainer.Resolve() 将实例化没有通过反射显式注册的类,允许这样的事情: using System; using Microsoft.Practices.Unity; na
我想显式“释放”Unity 解析的对象实例。我希望 Teardown 方法应该完全用于此目的,所以我尝试了这样的方法: container.RegisterType(typeof(IMyType),
假设我有一个依赖于接口(interface) IFace 的类,以及注入(inject)到构造函数中的其他几个依赖项(由 ... 描述)。我还有 2 个 IFace 接口(interface)的实现。
所以在我当前的代码中,我正在开发某种通知管理器。 我的想法是我的主要 BL 将在每次方法调用时使用这个通知管理器。因此可能只有一个通知管理器(我猜是单例)。 当您使用通知管理器时,您可以通过 SMS\
在类里面我使用这段代码: public User CurrentUser { get { var unityContainer
我有一个 MVC 应用程序,它具有采用 IDomainService 的 Controller。DomainService 类构造函数采用 IRepository并且 Repository 类构造函数
我是 Unity 应用程序 block 的新手,在尝试实现以下内容时遇到了一些困难。我有一个父子容器。当我解析子容器的新实例时,我想使用 CreateChildContainer 方法将新的 Unit
这是一个示例控制台应用程序(添加 Unity NugGet 包后它将运行良好)似乎显示了 Unity 中的错误: using System; using Microsoft.Practices.Uni
我想知道是否有一种简单的方法可以从统一容器中删除已经注册的类型,或者至少用另一个替换现有的接口(interface)/类型映射。仅将另一个类类型映射到一个接口(interface)并且旧的类类型被覆盖
我正在向我的库中添加依赖项注入(inject),为此我使用了 Unity。我想知道我是否需要采取一些额外的步骤来使 Unity Container 线程安全。我找到了几篇讨论线程安全容器的文章(例如:
我有以下类(class): public class Foo : IFoo { public Foo(IBar[] bars); } IBar有多种实现,都注册在UnityContainer中
我有以下类(class): public class Foo : IFoo { public Foo(IBar[] bars); } IBar有多种实现,都注册在UnityContainer中
我有一个代码示例,看起来像这样。 public class AdventureWorksRepository { [Dependency] private AdventureWorks
我有以下代码 var container = new UnityContainer(); //LINE 1 container.RegisterType()
我有一个使用 Unity 的应用程序。在应用程序的一个区域中,代码扫描程序集以使用以下代码注册类型(自动注册): public class CommonRegistry : UnityRegistry
这似乎是一个愚蠢的问题,因为在我的代码中一切正常,但我已经用我的 Unity 容器 _ambientContainer 以这种方式注册了一个单例: _ambientContainer.Registe
我是一名优秀的程序员,十分优秀!