Я только начал создавать API с сетевым ядром 2.1.
Я добавил строку подключения в appsettings.json и хочу получить к ней доступ.
appsettings.json
"MySettings": {
"connectionString": "Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=Subscription;Data Source=Test-Pc",
"Email": "abc@domain.com",
"SMTPPort": "5605"
}
Сначала я добавил менеджер конфигурации в файле startup.cs, чтобы его можно было внедрить в другие классы
startup.cs
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.Configure<MyConfig>(Configuration.GetSection("appsettings"));
}
У меня есть класс, в котором я инициализирую SQLConnection, но мне нужно ввести параметры приложения, чтобы я прочитал строку подключения.
ConnectionManager.cs
public class CustomSqlConnection : IDisposable
{
private SqlConnection sqlConn;
private readonly IOptions<MyConfig> _myConfig;
public CustomSqlConnection(IOptions<MyConfig> _Config = null)
{
_myConfig = _Config;
string connectionString = _myConfig.Value.connectionString;
if (string.IsNullOrEmpty(connectionString))
{
throw new Exception(string.Format("Connection string was not found in config file"));
}
this.sqlConn = new SqlConnection(connectionString);
}
}
Однако я хочу позвонить из другого класса.
CustomSqlConnection connection = new CustomSqlConnection()
Однако, IOptions<MyConfig> _Config
показывает мне ноль.
Как лучше всего инициализировать класс, который вводит IOptions или любой другой интерфейс.