Я пишу .NetStandard приложение, которое представляет собой тонкую оболочку для веб-службы / API. Я буду использовать этот клиент внутри основного приложения .net. Я хотел бы включить регистрацию в моем клиенте, но не уверен в том, каковы лучшие практики.
Я достиг желаемого результата, позволив потребителю кода вводить регистратор через конструктор, но это кажется грязным и не лучшим решением. Раньше я использовал Common.Logging, а затем просто кодировал интерфейс и позволял обеспечить реализацию во время выполнения, но я не уверен, как этого добиться с помощью новых пакетов Microsoft.Extensions.Logging.
Кроме того, у меня есть статический метод в классе без конструктора, который вообще не будет работать с инжекцией конструктора.
public class MyClass {
public ILogger _logger;
public MyClass(ILogger Logger){
_logger = Logger;
}
public void SomeMethod(){
_logger.LogDebug("Called SomeMethod");
}
}
public class SomeServiceClass {
public static DoService(){
_logger.LogDebug("Doing Service");
}
}
Я новичок в .net core, так что, возможно, я полностью упускаю суть. Я должен создать экземпляр регистратора для каждого класса (как в случае с log4net) или я должен позволить контейнеру DI создавать регистраторы и затем каким-то образом внедрять их? Пожалуйста, кто-нибудь может показать мне правильный способ обработки этого варианта использования.