如何使用 Autofac 注册 NodaTime.ZonedClock
how to register NodaTime.ZonedClock with Autofac
根据 Pac0 的评论 .
,可以这样注册 NodaTime.SystemClock
:builder.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.Utc
和 CalendarSystem.Gregorian
作为示例)。
请记住,由于两者都实现相同的接口 (IClock
),如果不使用键控注册或类似的方法,则不能同时注册两者。但是,如果您只想使用 ZonedClock
,这应该不是问题。
根据 Pac0 的评论
NodaTime.SystemClock
:builder.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.Utc
和 CalendarSystem.Gregorian
作为示例)。
请记住,由于两者都实现相同的接口 (IClock
),如果不使用键控注册或类似的方法,则不能同时注册两者。但是,如果您只想使用 ZonedClock
,这应该不是问题。