有的项目中就没有实现,比如Session中的SessionOptions:
public class SessionOptions
{ public string CookieName { get; set; } = SessionDefaults.CookieName; public string CookieDomain { get; set; } public string CookiePath { get; set; } = SessionDefaults.CookiePath; public bool CookieHttpOnly { get; set; } = true; public CookieSecurePolicy CookieSecure { get; set; } = CookieSecurePolicy.None; public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromMinutes(20);
}
微软有的项目中实现了,比如Caching中的MemoryCacheOptions:
public class MemoryCacheOptions : IOptions
{ public ISystemClock Clock { get; set; } public TimeSpan ExpirationScanFrequency { get; set; } = TimeSpan.FromMinutes(1);
MemoryCacheOptions IOptions.Value
{ get { return this; }
}
}
今天在使用EnyimMemcachedCore,需要手动newMemcachedClientOptions给MemcachedClientConfiguration的构造函数传参时,终于明白了实现IOptions的真正用处。
public class MemcachedClientConfiguration : IMemcachedClientConfiguration
{ public MemcachedClientConfiguration(
ILogger logger,
IOptions optionsAccessor)
{
}
}
如果完全使用依赖注入,不会出现手动new的情况,可以不用实现IOptions。否则,必须要实现。保险起见,还是实现一下为好。
public class MemcachedClientOptions : IOptions
{ //..
public MemcachedClientOptions Value => this;
}
但自己一直没发现实现IOptions究竟有什么用处,于是之前的代码就都没实现,比如之前一篇博文中的TopClientOptions。
文章为作者独立观点,不代表股票交易接口观点