如何向.Net Core 中的配置实例添加扩展方法?

How to add extension method to the configuration instance in .Net Core?

注意。这个问题不是关于如何implement extension methods

在传入的 IConfiguration 实例中,我可以通过以下方式从我的 appsettings.json 访问连接字符串语法。

string azureDb = Configuration.GetConnectionString("azure");

我在另一个部分中存储了应用程序的许多其他参数。这些可以通过以下语法访问。

string server = Configuration.GetSection("Smtp")["server"];

我想设置一个扩展方法,这样我就可以像选择连接字符串一样选择我的设置。所以我设置了一个 class 包含以下内容。

public static class Extension
{
  public static string GetSmtpServer(this IConfiguration configuration)
  {
    return configuration.GetSection("Smtp")["server"];
  }
}

但是,这将不起作用,因为无法将扩展方法分配给接口。我应该如何在这里进行?由于 class Extension 是静态的,我也感觉到了一个问题。我注意到将东西注入静态构造函数有点问题。

是否可以像他们对连接字符串所做的那样添加我自己的自定义?怎么样?

扩展方法完全有效 this 指向一个接口。但是,您需要确保实现接口的对象是实际实例,否则将发生 NullReferenceException

我认为你做错的是获取一个部分然后尝试使用 [] 语法。

它应该像这样工作:

return configuration["Smtp:server"];