将现有实例(对象)添加到unity

时间:2010-06-18 15:43:11

标签: c# unity-container inversion-of-control

我想将现有对象添加到注册到特定接口的Unity容器

所以当我解析接口时,我得到了现有对象(它用于测试,对象包含大量XML数据,对于每个测试用例,我想使用另一个对象)。

我这样做:

public static void RegisterInstance<T>(T instance)
        {

            container.RegisterInstance<T>(instance);
        }

其中container是我的UnityContainer。 此代码位于名为IoCContainer

的静态类中

我的电话是:

IoCContainer.RegisterInstance<IConfigurationRepository>(new MockConfigurationRepository(XML));

这似乎有效,但是当我后来添加一个新实例时,旧的实例似乎被Unity保存在内存中。 因此,当我后来想要注册对象B而不是对象B(在测试期间)以及稍后在寄存器C上时,unity正确地解析C但是它将B和A保留在内存中(并且它们非常大,这就是为什么我注意到了

有没有办法从Unity的内存中删除A和B?

1 个答案:

答案 0 :(得分:0)

嗯,似乎问题不在于Unity保存对象,而是在应用程序中创建的使用该对象的对象会阻止GC收集它。

所以这不是一个答案,但我没有看到任何删除按钮...