繁体   English   中英

DryIoc用功能解决

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM