我有两个接口,都是由Apple类实现的
interface a { }
interface b { }
class Apple: a,b
{
}
现在,如果我在两个接口上注册Apple,但只有一个使用ContainerControlledLifeTimeManager,那么解析另一个接口也会返回相同的实例。为什么这是它的方式,无论如何解决它?
IUnityContainer container = new UnityContainer();
container.RegisterType<a, Apple>(new ContainerControlledLifetimeManager());
container.RegisterType<b, Apple>();
var a = container.Resolve<a>();
Console.WriteLine(container.Resolve<b>().Equals(a).ToString());
答案 0 :(得分:8)
注入配置是针对实现类而不是接口完成的。这包括寿命。因此,当您为Apple设置容器控制的生命周期时,无论您使用哪个接口,它都将始终是相同的实例。
如果您确实需要具有不同生命周期的相同类型的不同接口,此时此唯一选项将被命名为注册。