TGStat
TGStat
Введите текст для поиска
Расширенный поиск каналов
  • flag Russian
    Язык сайта
    flag Russian flag English flag Uzbek
  • Вход на сайт
  • Каталог
    Каталог каналов и чатов Региональные подборки Тематические подборки Платные каналы Поиск каналов
    Добавить канал/чат
  • Рейтинги
    Рейтинг каналов Рейтинг чатов Рейтинг публикаций
    Рейтинги брендов и персон
  • Аналитика
  • Поиск по публикациям
  • Мониторинг Telegram
  • Продвижение
    Реклама через Яндекс Бизнес Реклама в каналах через TGStat Agency Реклама на сайте TGStat.ru
Чат .NET Разработчиков

29 Sep 2020, 09:38

Открыть в Telegram Поделиться Пожаловаться

Репост из: .NET Разработчик
День шестьсот восьмой. #ЗаметкиНаПолях
Паттерн Options. Продолжение
Начало

Извлечение в интерфейс
Чтобы не использовать внедрения вроде IOptions или IOptionsSnapshot в классах приложения, можно выделить параметры в интерфейс
public class PositionOptions : IPositionOptions {
public const string Position = "Position";

public string Title { get; set; }
public string Name { get; set; }
}

public interface IPositionOptions {
string Title { get; }
string Name { get; }
}

Затем зарегистрируем интерфейс в сервисах, используя фабрику:
services.Configure(
Configuration.GetSection("Position"));
services.AddSingleton(
sp => sp.GetRequiredService<
IOptions>().Value);

И используем готовый интерфейс:
public TestModel(IPositionOptions options) {
_options = options;
}

Именованные параметры
Именованные параметры полезны, когда несколько разделов конфигурации привязаны к одним и тем же свойствам. Например:
"ContactUs": {
"Manager": {
"Name": "Joe Smith",
"Phone": "555-01-01"
},
"CEO": {
"Name": "Jane Smith",
"Phone": "555-02-02"
}
}

public class ContactSettings {
public string Name { get; set; }
public string Phone { get; set; }
}

Тогда можно использовать перегруженную версию метода Configure, принимающую строковое имя:
services.
Configure("Manager",
Configuration.GetSection(
"ContactUs:Manager"));
services.Configure("CEO",
Configuration.GetSection("ContactUs:CEO"));

Получить значения параметров из сервиса можно, передав имя набора в метод Get:
private readonly ContactSettings _manager;
private readonly ContactSettings _ceo;

public TestNamed(
IOptionsSnapshot options) {
_manager = options.Get("Manager");
_ceo = options.Get("CEO");
}

Продолжение следует…

Источник: https://app.pluralsight.com/library/courses/dotnet-core-aspnet-core-configuration-options/
Каталог
Каталог каналов и чатов Подборки каналов Поиск каналов Добавить канал/чат
Рейтинги
Рейтинг каналов Telegram Рейтинг чатов Telegram Рейтинг публикаций Рейтинги брендов и персон
API
API статистики API поиска публикаций API Callback
Наши каналы
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Почитать
Академия TGStat Исследование Telegram 2019 Исследование Telegram 2021 Исследование Telegram 2023
Контакты
Справочный центр Поддержка Почта Вакансии
Всякая всячина
Пользовательское соглашение Политика конфиденциальности Публичная оферта
Наши боты
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot