Есть ли в ядре dotnet эквивалент аннотации @PostConstruct в Spring?

Я унаследовал некоторый код в dotnet, который я пытаюсь реорганизовать, чтобы использовать внедрение зависимостей. Весной я использовал аннотацию @PostConstruct для настройки сервисов после завершения внедрения зависимостей. Есть ли аналог в dotnet?

Spring вызывает методы, аннотированные @PostConstruct, только один раз, сразу после инициализации класса.


person AltekkeE    schedule 24.06.2019    source источник
comment
Нет, я не думаю, что в dotnet есть аннотация @PostConstruct; хотя, возможно, есть библиотека, которая эмулирует эту функцию.   -  person PeonProgrammer    schedule 24.06.2019
comment
Почему вы хотите настроить службы после внедрения зависимостей? .NET Core DI в основном основан на конструкторе. Конструктор объекта может делать с внедряемыми сервисами все, что ему заблагорассудится, а это значит, что ему не нужен этап пост-конструкции. Вам нужна аннотация PostConstruct только при использовании внедрения зависимостей на основе свойств. Существует средство постконфигурации, но это, вероятно, не то, что вам нужно.   -  person Panagiotis Kanavos    schedule 24.06.2019
comment
@PeonProgrammer для начала не нужен. Когда у вас есть внедрение конструктора, вы знаете, когда выполняется внедрение зависимостей — непосредственно перед вызовом конструктора.   -  person Panagiotis Kanavos    schedule 24.06.2019


Ответы (1)


Я не знаю, что такое @PostConstruct, но когда вы выполняете внедрение зависимостей в C# (в зависимости от того, как вы это реализуете), вы можете просто написать нужный код внутри конструктора. .

Предположим, у вас есть этот класс:

class MyObj
{
    public MyObj(DependedObj obj1, ILogger logger)
    {
        // Here you can run what you want, with all the depended objects
    }
}

Внедрение зависимостей запустит конструктор с объектами, которые необходимо определить при инициализации внедрения зависимостей.

person baruchiro    schedule 24.06.2019
comment
Частично верно, зрелые DI-фреймворки часто широко используют автосвязывание свойств, поэтому конструктор — это то, что происходит до того, как все значения свойств будут введены. - person MonDeveloper; 27.05.2020