169 похожих чатов

Подскажите лучше как поступить у меня есть бот на дотнете в

докере, в .env конфиге указываешь свой айди чтоб он знал что ты админ бота при проверке входящих сообщений

проблема в том что он проверяет айди админа в нескольких местах, и ок ли во всех этих местах вписывать условный Int.Parse(Environment.GetEnvironmentVariable("ADMIN_ID")) ?
я считаю что лучше это вынесу в какуюто глобальную переменную чтоб оно только 1 раз считало и спарсило айдишник, но не могу придумать реализации которая не являлась бы паттерном синглтон

как в этой ситуации лучше поступить?

24 ответов

6 просмотров

а что не так с синглтоном?

IConfiguration + IConfigurationBuilder

Mess Effect-181602.50 Автор вопроса
Alex
а что не так с синглтоном?

говорят антипаттерн, вводит в заблуждение

Mess Effect-181602.50 Автор вопроса
Alex
спорь и пиздь их

на собесе был такой вопрос)

Mess Effect 181602.50
на собесе был такой вопрос)

на собесе всегда за всё хорошее и против всего плохого ) и серого не существует )

Mess Effect-181602.50 Автор вопроса
quad*
[AdminValidationID]

И зашивать в код айдишник админа?

Mess Effect-181602.50 Автор вопроса
quad*
[AdminValidationID]

у меня стоит такой [Role(UserAccess.Admin)]

Mess Effect-181602.50 Автор вопроса
Andrew
Это норм

ох уж я там наигрался с рефлексией чтоб то реализовать

Andrew
И зашивать в код айдишник админа?

А если в конструкторе его и парсить конфиг на айди? Или не получится?

quad*
А если в конструкторе его и парсить конфиг на айди...

Я это и предложил, только дотнет уже давно научился это делать удобно

quad*
А если в конструкторе его и парсить конфиг на айди...

var configuration = new ConfigurationBuilder() .AddEnvironmentVariables() .Build() Перед Build можно всунуть и другие провайдеры, например, читать из жсон файла, из аргументов командной строки или из других источников Дальше configuration засунуть туда, где нужно считывать эту конфигурацию

quad*
Ради строки билдер)

там их обычно дохрена )

Andrew
Что?

Я уже полу сплю, ему вроде как айди только передать свое, чтобы бот знал кто батя

quad*
Я уже полу сплю, ему вроде как айди только передат...

А если нужно еще конфигурацию передать будет?

Andrew
Я это и предложил, только дотнет уже давно научилс...

Я кстати имел ввиду в конструкторе атрибута🤷‍♂️

В добавок к тому что написали выше, я бы сделал это так: 1) services.AddOptions<AdminOptions>() .BindConfiguration("Admins") .ValidateDataAnnotations(); Данный подход даёт тебе сразу валидацию через атрибуты Required, MinLength, Range, EmailAddress и так далее 2) class AdminOptions { public List<int> AdminIds { get; set; } public int AdminId { get; set; } } Принимаешь как списки айдишников, так и один айдишник. В принципе, структура может быть любой вложенности 3) С точки зрения конфигурации есть несколько способов передавать Если через env: a) Admins:AdminIds:0=123456 b) Admins:AdminIds:1=654321 Либо a) Admins__AdminIds__0=123456 b) Admins__AdminIds__1=654321 Если через json: { "Admins": { "AdminIds": [123456,654321] } } Всё легко и просто Далее работа через IOptions

Похожие вопросы

Обсуждают сегодня

@Aiwan что такое база образца?
Alexey
27
Не многие знают, а кто знает, тот уже успел забыть, что в далёком 2004 году эта игра произвела настоящий фурор, настолько революционной была технология, применяемая для её соз...
ICCID
4
Хотя у меня сейчас есть более сложная задача, вот её думаю: как объяснить челу переходного возраста противоположного полу, обучающегося в польском колледже (а-ля наш техникум)...
Вячеслав Кузьменко
15
коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
30
верно что я могу удалить эти addq и subq т.к. со стеком никакого взаимодействия нет (исключая call)?
Michael
16
Hi Everyone! To all Are you Looking for Interview Support at the Lowest Price? Look no further! Then contact us We offer Interview Support for a low cost variety of technol...
Rambabu Nallamilli
3
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
всем привет. подскажите: вот по русски называется "прошивка для контроллера". или "бинарь" могут сказать. или "дамп". А как по английски это называется? Я хочу попытаться по...
Павлик Ливаткин
4
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
Карта сайта