Muh*_*han 5 .net enterprise-library unity-container
我有两个接口,都是由Apple类实现的
interface a { }
interface b { }
class Apple: a,b
{
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我在两个接口上注册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());
Run Code Online (Sandbox Code Playgroud)
注入配置是针对实现类而不是接口完成的.这包括寿命.因此,当您为Apple设置容器控制的生命周期时,无论您使用哪个接口,它都将始终是相同的实例.
如果您确实需要具有不同生命周期的相同类型的不同接口,则此时唯一的选项将被命名为注册.
| 归档时间: |
|
| 查看次数: |
1038 次 |
| 最近记录: |