问题:大多数作业都依赖于配置依赖性。
理想的解决方案:(如果您已经确切知道如何执行此操作,则复制此处和最后只是为了节省阅读)
我愿意
旧解决方案:对于我要替换的自定义“作业调度程序”,我们采取以下步骤
黑客解决方案:所以这对大多数人来说都有效,但我仍然想知道如何通过创建一个“包装作业”类来完成我想要做的事情,该类在运行作业时使用相同的数据来创建相同的范围。
理想解决方案:理想情况下我可以注入逻辑并且
我已经尝试/查看了过滤器属性 - 用于保存和恢复数据,但没有在这里找到任何对 IoC 或生命周期范围的访问。
还有一些其他选项,但它们也仅限于“暴露”到 IoC 容器/范围
理想的解决方案: 我愿意
哇我很密集,所以查看[委托工厂](委托工厂)文档并深入研究隐式关系类型
我意识到我让这件事变得比需要的要困难得多,我正在寻找的是这里清楚地记录了但我从来没有仔细观察过所以这里是一个工作示例
public class ScratchPad
{
[Fact]
public void WhenRunningThisThenItWorks()
{
var builder = new ContainerBuilder();
builder.RegisterType<MyNeedyRuntimeClass>();
builder.RegisterType<SomethingElseNeeded>();
var container = builder.Build();
var theFuncFactory = container.Resolve<Func<SomeRuntimeThing, MyNeedyRuntimeClass>>();
var func = () => theFuncFactory.Invoke(new SomeRuntimeThing());
func.Should().NotThrow("constructor need for `SomeRuntimeThing` should be passed in from Func and dependency for `SomethingElseNeeded` is handled from the service registration");
}
}
这是我仅供参考的空类
class MyNeedyRuntimeClass
{
public MyNeedyRuntimeClass(SomeRuntimeThing someRuntimeIdOrSomething, SomethingElseNeeded bar)
{
//....
}
}
internal class SomeRuntimeThing
{
}
internal class SomethingElseNeeded
{
}