gpt4 book ai didi

c# - DryIoc 用函数解析

转载 作者:行者123 更新时间:2023-11-30 21:46:36 28 4
gpt4 key购买 nike

我正在尝试将对象解析为 Func<> 的结果.但我不知道该怎么做。

例如,这里我有一个变量(函数参数)lazyInt (这可能是某种长时间运行计算的结果)并且在以后可能使用之前不需要哪个结果。

        private Demo(Container c, Func<int> lazyInt) : base(c)
{
_container = c;
c.Register<int>(made: Made.Of(/*???*/));
}

我尝试使用 ServiceInfo.Of等,但暂时没有成功。怎么做到的?

最佳答案

您需要使用 RegisterDelegate 而不是 Made.Of 来处理已经创建的运行时委托(delegate):

var c = new Container();

Func<int> lazyInt = () => 42;
c.RegisterDelegate(_ => lazyInt());

var shouldBe42 = c.Resolve<int>();
当您可以提供 expression 时,

Made.Of 会更好使用方法调用或属性访问来创建服务。它使 DryIoc 能够解析提供的表达式以进行诊断,并将其直接放入生成的工厂委托(delegate)中。因为您已经有一个委托(delegate)对象,所以 Made.Of 对您没有任何好处。

关于c# - DryIoc 用函数解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39167923/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com