如何使用 Autofac 注册 NodaTime.ZonedClock

how to register NodaTime.ZonedClock with Autofac

根据 Pac0 的评论 .

,可以这样注册 NodaTime.SystemClockbuilder.Register(_ => SystemClock.Instance).As<IClock>().SingleInstance();

如何为 NodaTime.ZonedClock 执行相同的操作?

ZonedClock 似乎没有像 SystemClock 那样的单例访问器,因此您必须调用它的构造函数。使用与 SystemClock 相同的方法,它看起来像这样:

builder
    .Register(_ => new ZonedClock(SystemClock.Instance, DateTimeZone.Utc, CalendarSystem.Gregorian))
    .As<IClock>()
    .SingleInstance();

您可以根据需要调整参数(我添加了 DateTimeZone.UtcCalendarSystem.Gregorian 作为示例)。

请记住,由于两者都实现相同的接口 (IClock),如果不使用键控注册或类似的方法,则不能同时注册两者。但是,如果您只想使用 ZonedClock,这应该不是问题。