如何向.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"];
注意。这个问题不是关于如何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"];