Каков предпочтительный подход для регистрации ошибок отдельных деталей с импортированными деталями?Например, если у вас есть следующий контракт:
public interface IDoStuff
{
void DoYourStuff();
}
с несколькими реализациями:
[Export(typeof(IDoStuff))]
public class DoStuffCorrectly : IDoStuff
{
//implement void run
}
[Export(typeof(IDOstuff))]
public class DoStuffWithExceptions : IDoStuff
{
// implement void run and throws exception
}
и у вас есть Type, который использует mef для составления частей.
public class DoStuffRunner
{
[ImportMany(typeof(IDoStuff))]
IEnumerable<IDoStuff> DoStuffPats {get;set;}
//some method that loops through the IEnumerable and calls run
public void Run()
{
foreach(IDostuff doit in DoStuffParts)
{
doit.Run();
}
}
}
В исполняемой сборке с импортером я использую блоки приложения Entlib для обработки исключений и ведения журнала.Блок приложения регистрации настроен на отправку общих сообщений об ошибках команде.Некоторая информация, которую я хотел бы включить, - какая часть не прошла, и, возможно, какая группа получит электронное письмо.
Это достаточно просто для статической настройки в конфигурации приложения, но это приведет к конфигурации 1: 1 для каждой добавляемой части, что приведет к поражению цели удаления библиотеки DLL в корзину.Было бы неплохо, если бы вы могли контролировать конфигурацию в сборке детали.
Итак, каковы некоторые возможные подходы, которые позволили бы детали представить информацию, которая позволила бы импортированной детали предоставить информацию конфигурации журналирования, которая бы объединялас идеологией МЭФ?