【发布时间】:2018-09-28 11:37:15
【问题描述】:
我正在尝试使用 Unity 通过它的 base 接口解析对象。如果我有以下接口和类:
interface IFoo { }
interface IBar : IFoo { }
class MyBar : IBar { }
我想将MyBar 注入多个类,如下所示:
class DoSomething
{
public DoSomething(IFoo myBar)
{
// Execute a method from IFoo implementation
}
}
class DoSomethingElse
{
public DoSomethingElse(IBar myBar)
{
// Execute a method from IBar **AND** IFoo implementation
}
}
如果我像这样注册MyBar:
container.RegisterType<IBar, MyBar>();
Unity 在尝试解析 IFoo 时抛出错误(请参阅 DoSomething 构造函数)。但是IBar继承自IFoo?
我可以像这样在容器中注册MyBar 两次:
container.RegisterType<IFoo, MyBar>();
container.RegisterType<IBar, MyBar>();
但感觉我不应该这样做。我这里可能是错的。
所以我的问题是 Unity 是否可以从其基接口解析一个类?
【问题讨论】:
-
如果你想对
MyBar使用单例注册,你应该想办法告诉服务容器,为了解析IFoo,它可以解析IBar并投下,否则这两个接口中的每一个通常都会解析为MyBar类的两个不同实例。
标签: c# unity-container