Dor*_*oby 6 c# unity-container
我在Unity容器中看到一个奇怪的行为,当使用两个接口时,它们都注册到同一个装饰器.代码示例将更清晰.
我有以下类层次结构:
public interface IBaseInterface
{
}
public interface IInterface1: IBaseInterface
{
}
public interface IInterface2: IBaseInterface
{
}
public class Interface1Impl : IInterface1
{
}
public class Interface2Impl : IInterface2
{
}
public class BaseInterfaceDecorator: IInterface1,IInterface2
{
private readonly IBaseInterface baseInterface;
public BaseInterfaceDecorator(IBaseInterface baseInterface)
{
this.baseInterface = baseInterface;
}
}
public class MyClass
{
private readonly IInterface1 interface1;
public MyClass(IInterface1 interface1)
{
this.interface1 = interface1;
}
}
Run Code Online (Sandbox Code Playgroud)
这是注册码:
var container = new UnityContainer();
container.RegisterType<IInterface1, BaseInterfaceDecorator>(
new InjectionConstructor(
new ResolvedParameter<Interface1Impl>()));
container.RegisterType<IInterface2, BaseInterfaceDecorator>(
new InjectionConstructor(
new ResolvedParameter<Interface2Impl>()));
var dependency = container.Resolve<MyClass>();
Run Code Online (Sandbox Code Playgroud)
在解析MyClass时,我得到的是带有Interface2Impl而不是Interface1Impl的BaseInterfaceDecorator.对我来说似乎很奇怪.你可以解释吗?
| 归档时间: |
|
| 查看次数: |
1615 次 |
| 最近记录: |