Man*_*anu 13 c# .net-framework-version asp.net-core .net-standard
我正在将 .netframework 4.7.2 类库迁移到 .netstandard 2.0 库。
ConfigurationManager 在.netframework 类库中用于读取应用程序设置。
.netstanard 中的 System.Configuration.ConfigurationManager 可用的任何替代选项。
迁移的类库需要在 .net core Web API 和旧的 .netframework Web 应用程序中使用。
您可以ConfigurationManager
通过nuget package安装,它面向 .Net Standard 2.0。
至于 ASP.Net Core,请查看Microsoft.Extensions.Configuration。
正如我所说,您不应该直接依赖于如何在类库中获取配置。保持您的类库灵活。
不要在类库中执行此操作:
public void UpdateProductName(int productId, string name)
{
using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["MyDatabase"]))
{
connection.ExecuteNonQuery("UPDATE dbo.Products SET Name = @Name WHERE Id = @ProductId", new { ProductId = productId, Name = name });
}
}
Run Code Online (Sandbox Code Playgroud)
通过直接在类库中使用 ConfigurationManager,您已将该类绑定为仅允许一种形式的获取连接字符串。这意味着如果您想使用 appsettings.json、环境变量、KeyVault 或任何其他获取配置的方法,则不能。
相反,请执行以下操作:
public class MyDatabaseRepository
{
readonly string _connectionString;
public MyDatabaseRepository(string connectionString)
{
_connectionString = connectionString;
}
}
public void UpdateProductName(int productId, string name)
{
using (var connection = new SqlConnection(_connectionString))
{
connection.ExecuteNonQuery("UPDATE dbo.Products SET Name = @Name WHERE Id = @ProductId", new { ProductId = productId, Name = name });
}
}
Run Code Online (Sandbox Code Playgroud)
现在,您可以在使用应用程序中获取所需的连接字符串。
在 .NET Core 应用程序中,您可以执行以下操作以通过 Microsoft.Extensions.Configuration 从 appsettings.json 获取连接字符串:
string connectionString = Configuration.GetConnectionString("MyDatabase");
MyDatabaseRepository repository = new MyDatabaseRepository(connectionString);
repository.UpdateProductName(1, "Transformer");
Run Code Online (Sandbox Code Playgroud)
它仍然允许您在 .NET Framework 应用程序中灵活地使用 System.Configuration:
string connectionString = ConfigurationManager.ConnectionStrings["MyDatabase"].ConnectionString;
MyDatabaseRepository repository = new MyDatabaseRepository(connectionString);
repository.UpdateProductName(1, "Transformer");
Run Code Online (Sandbox Code Playgroud)
与依赖注入相结合,这成为一个非常灵活和强大的工具。
归档时间: |
|
查看次数: |
17674 次 |
最近记录: |