我正在尝试创建一个方案,在该方案中,我可以使用Per Resolve Lifetime Manager,但也可以使用Unity自动工厂。我希望解析度使用与原始解析相同的状态,但是将解析度推迟到调用factory方法时。我的用例是,如果我调用factory方法,我希望数据库事务管理器传递给依赖项,但是如果不使用依赖项,则不要浪费时间和资源来构建依赖项。
我当时想创建一个新的Delegate并以与Func注册时相同的样式进行注册,但是我不确定哪个是正确的注入点。
public class MainMethod
{
private readonly DependencyOne _dependencyOne;
public MainMethod(DependencyOne dependencyOne)
{
_dependencyOne = dependencyOne;
}
}
public class DependencyOne
{
private readonly Defer<DependencyTwo> _dependencyTwo;
private readonly TransactionManager _transactionManager;
public DependencyOne(Defer<DependencyTwo> dependencyTwo,
TransactionManager transactionManager)
{
_dependencyTwo = dependencyTwo;
_transactionManager = transactionManager;
}
public DataMethod(Data data)
{
transactionManager.DoSomething();
_dependencyTwo().Datamethod(data);
}
}
public class DependencyTwo
{
private readonly Defer<DependencyTwo> _dependencyTwo;
private readonly TransactionManager transactionManager;
public DependencyOne(Defer<DependencyTwo> dependencyTwo,
TransactionManager _transactionManager)
{
_dependencyTwo = dependencyTwo;
_transactionManager = transactionManager;
}
public DataMethod(Data data)
{
transactionManager.DoSomething(); //Same Transaction Manager
Datamethod(data);
}
}
因此,在本示例中,当MainMethod得到解析时,unity将立即解析DependencyOne,但是DependencyTwo仅在调用DataMethod时被解析。
我创建了一个包装器类,可以捕获作用域中的参数,但这并不理想,我想为此团结一心。