如何使用 Unity 通过工厂注入依赖项
本文关键字:注入 依赖 工厂 何使用 Unity | 更新日期: 2023-09-27 18:34:56
>想象一下,我将通过工厂创建一些东西:
public sealed class MyClass
: IMyClass
{
private IMyDao MyDao { get; set; }
public MyClass(IMyDaoFactory factory)
{
MyDao = factory.MyDao;
}
}
这可以通过服务解决为:
public sealed class MyService
: IMyService
{
private readonly IMyClass myClass;
public MyService(IMyDaoFactory factory)
{
myClass = new MyClass(factory);
}
}
这很容易在 Unity 中连接起来,例如:
var container = new UnityContainer();
container.RegisterType<IMyService, MyService>();
container.RegisterType<IMyDaoFactory, MyDaoFactory>();
container.RegisterType<IMyClass, MyClass>();
注意到 MyClass 的注册,如何设置 Unity 以便它通过工厂自动注册和解析? 即我不再需要:
myClass = new MyClass(factory);
只:
this.myClass = myClass; (passed through the constructor
as IMyClass and resolved by Unity)
希望这是有道理的。提前谢谢。
尝试将 MyService
的构造函数切换为需要单个 IMyClass
实例;Unity 应自动填充其中的空白,并根据类型签名进行实例化。
public MyService(IMyClass _myClass)
{
myClass = _myClass;
}
虽然我也会改名字,但是嗯。