Оба подхода могут быть «синтаксически» правильными, но внедрение зависимостей даст вам максимальную гибкость. После перехода на. NET Core DI интегрирован в каркас, поэтому реализовать его довольно просто (хотя с самого начала трудно доминировать над ним).
В любом случае, читая ваш вопрос, кажется, что Вы делаете вид, что храните некоторые пользовательские данные для последующего использования. Если это так, то singleton не будет лучшим выбором, поскольку вы сейчас находитесь в многопользовательской среде и все пользователи будут обращаться к одному и тому же экземпляру каждый раз.
Вам следует создайте фабрику, которая создает этот класс для каждого пользователя, а затем зарегистрируйте его в DI как scoped , поскольку объекты такого типа сохраняются в течение всего сеанса пользователя.
Здесь вы найдете полезно c от Microsoft о том, чего вы пытаетесь достичь, включая шаблоны и практики:
Внедрение зависимостей конфигурации
С уважением