【问题标题】:Should custom ASP.NET Core options implement IOptions<>?自定义 ASP.NET Core 选项是否应该实现 IOptions<>?
【发布时间】:2017-05-26 08:52:22
【问题描述】:

在浏览 ASP.NET Core 配置的官方文档时,我们可以找到以下示例。这在其他样本中也占主导地位。

public class MyOptions
{
    public MyOptions()
    {
        // Set default value.
        Option1 = "value1_from_ctor";
    }
    public string Option1 { get; set; }
    public int Option2 { get; set; } = 5;
}

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration

我正在浏览 ASP.NET Core Caching 存储库,并注意到 Microsoft 团队的操作方式略有不同。

public class MemoryCacheOptions : IOptions<MemoryCacheOptions>
{
    // removed stuff

    MemoryCacheOptions IOptions<MemoryCacheOptions>.Value
    {
        get { return this; }
    }
} 

https://github.com/aspnet/Caching/blob/dev/src/Microsoft.Extensions.Caching.Memory/MemoryCacheOptions.cs

实施 IOptions 有什么好处?它给了我们什么“魔法”?

【问题讨论】:

    标签: asp.net-core


    【解决方案1】:

    不,不需要实现接口。据我所知,它没有提供任何价值。该类中的大部分代码都相当旧(2-3 年),因此它可能只是早期选项实现的一些剩余部分。事实上,我猜它可以安全移除。

    【讨论】:

      【解决方案2】:

      在 ASP.NET Core github 上发布了这个问题,并得到了其中一位开发人员的回答。通过实现 IOptions,您可以更轻松地在单元测试中使用它,而无需部署 Options 基础设施。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 1970-01-01
        • 1970-01-01
        • 2019-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多