Конфигурация .NET Core вынуждает меня использовать DependencyInjectionC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Конфигурация .NET Core вынуждает меня использовать DependencyInjection

Сообщение Anonymous »

Я хочу прочитать неконтроллерный класс appsettings.json. Рассмотрим объект DatabaseUtil и статический метод Connect(). Мне нужен ConnectionString для подключения, и я получаю его из appsettings.json. Эта операция проще простого в файле start.cs:)
Вот так:

Код: Выделить всё

Configuration.GetConnectionString("HangfireDBConn")
Также это может быть на стороне контроллера с внедрением зависимостей, но моя проблема заключается в том, что я хочу получить доступ к appSettings из класса DatabaseUtil.
appSettings.json:

Код: Выделить всё

"NotifySettings": {
"DbConnection": "abc",
"Email": "abc@domain.com",
"SMTPPort": "5605"
}

Затем я создал свой класс настроек конфигурации:

Код: Выделить всё

 public class NotifySettings
{
public string DbConnection { get; set; }
public string Email { get; set; }
public string SMTPPort { get; set; }
}
И я добавил зависимость для внедрения конструктора в класс DatabaseUtil и добавил IDatabaseUtil:

Код: Выделить всё

public  class DatabaseUtil : IDatabaseUtil
{
private static NotifySettings _NotifySettings;

public DatabaseUtil(IConfiguration _iconfig)
{
_NotifySettings = _iconfig.GetSection("NotifySettings").Get();
}
public static String ConnectToDatabase()
{
return "MESSAGE :" + _NotifySettings.DbConnection;
}

}
}
И я добавил DatabaseUtil в файл start.cs:

Код: Выделить всё

 services.AddScoped();
и, наконец, я внедрил IDatabaseUtil в свой класс контроллера, и я могу дойти до конца этой работы в разделе «Мои настройки».
Да, я могу, но это не лучший способ!

Присоединяйтесь к моему мозговому штурму :) ; Если мне нужно внедрить в IDatabaseUtil каждый класс, в котором я хочу использовать вспомогательные методы БД, но если бы у меня был статический метод в этом классе, мне нужна была бы только эта строка кода:

Код: Выделить всё

DatabaseUtils.connect();
У меня такое ощущение, будто я написал ненужный код.
Что вы думаете о моем приближении? Какой из них лучше всего подходит для этого случая?

Подробнее здесь: https://stackoverflow.com/questions/619 ... yinjection
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Что приведет к тому, что сайт Java Backend вынуждает тесные браузеры Chromium на дороге? [закрыто]
    Anonymous » » в форуме JAVA
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Ошибка Bad Gateway (502) при вызове API Core Core .NET .NET из другого API Core .NET .NET .NET .NET
    Anonymous » » в форуме C#
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Не удалось загрузить файл или сборку Microsoft.Extensions.DependencyInjection.Abstractions, версия=1.1.0.0.
    Anonymous » » в форуме C#
    0 Ответы
    74 Просмотры
    Последнее сообщение Anonymous
  • Что такое эквивалент Microsoft.Practices.Unity ResolverOverride в Microsoft.Extensions.DependencyInjection?
    Anonymous » » в форуме C#
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»