У меня есть своего рода архитектура плагина в моем решении. Есть известная папка, куда в нее класть плагины. Плагины реализуют интерфейс, который используется в основном проекте.
Изначально я загружаю плагин через Assembly.LoadFrom(fi.FullName).GetTypes()
и создаю экземпляр нужного типа через (IPlugin)Activator.CreateInstance(type);
.
Таким образом, хост (основное приложение) может выполнять соответствующий код, реализованный сборкой плагина. Пока это работает нормально.
Но недавно я попытался реализовать ведение журнала приложений через NLog и настроил NLog в хост-проекте, и это отлично сработало.
Проблема в том, что я хотел бы использовать (уже настроенный) регистратор в сборке плагина. Если я просто сошлюсь на NLog и использую его LogManager.GetCurrentClassLogger();
, похоже, не будет задана конфигурация. Он не регистрируется в файлах, которые я настроил в хост-проекте из сборки плагина.
Я подумал о попытке внедрить экземпляр NLogger (созданный в хост-проекте) в свойство типа плагина.
Возможно ли это или есть предпочтительный способ выполнить такие вещи? Спасибо