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

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

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

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

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

24 ответов

15 просмотров

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

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

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта