[英]DryIoc resolve with a func
我正在尝试将对象解析为Func<>
的结果。 但是我不知道该怎么做。
例如,在这里,我有一个变量(函数参数) lazyInt
(这可能是长期运行某种计算的结果),在以后可能使用之前不需要该结果。
private Demo(Container c, Func<int> lazyInt) : base(c)
{
_container = c;
c.Register<int>(made: Made.Of(/*???*/));
}
我尝试使用ServiceInfo.Of
等,但暂时没有成功。 如何做呢?
您需要使用RegisterDelegate
而不是Made.Of
来处理已创建的运行时委托:
var c = new Container();
Func<int> lazyInt = () => 42;
c.RegisterDelegate(_ => lazyInt());
var shouldBe42 = c.Resolve<int>();
当您可以通过方法调用或属性访问为服务创建提供表达式时, Made.Of
会更好。 它使DryIoc能够解析提供的表达式以进行诊断,并将其直接放入生成的工厂委托中。 因为您已经有一个委托对象,所以Made.Of
不会对您有任何好处。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.