gpt4 book ai didi

c# - Autofac:如何使用动态值注入(inject)属性?

转载 作者:太空宇宙 更新时间:2023-11-03 16:14:29 25 4
gpt4 key购买 nike

通过 Autofac,很容易将静态值注入(inject)给定程序集中类实例的 CurrentDate 属性:

builder.RegisterApiControllers(asm).WithProperty("CurrentDate", new DateTime(2012, 1, 13));

但是,如何注入(inject)动态值,例如lamda () => { return DateTime.Now; 返回的值}CurrentDate 属性?

最佳答案

听起来你可以使用非常标准的属性注入(inject),就像这样:

builder.RegisterApiControllers(asm)
.OnActivating(e => { e.Instance.CurrentDate = DateTime.Now; });

请注意,您可能需要转换 e.Instance,因为它可能属于 Object 类型。

参见 Lifetime Events in the documentation了解更多信息。

转念一想,为什么不直接将初始化放在基类构造函数中呢?

public DateTime CurrentDate { get; private set; }
protected ApiController() { CurrentDate = DateTime.Now; }

当前日期并不是您需要 DI 容器提供的真正依赖项。

关于c# - Autofac:如何使用动态值注入(inject)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16116121/

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