.net Mef с Enterprise Library 5.0 - PullRequest
       29

.net Mef с Enterprise Library 5.0

2 голосов
/ 12 апреля 2011

Я хочу использовать mef с блоками журналирования и исключений в Enterprise Library 5.0.

Что я делаю, так это то, что у меня определен плагин, который MEF ищет в каталоге. Затем он импортирует его для меня. Однако я использую ведение журнала и обработку исключений в плагине, и я хотел бы иметь возможность вставить экземпляр LogWriter и ExceptionWriter через mef. В примере показано, как сделать это с помощью единства, которое не сработает, поскольку я использую mef, чтобы получить плагин и создать его экземпляр.

спасибо

1 Ответ

2 голосов
/ 13 апреля 2011

Вы можете экспортировать LogWriter с таким классом:

public class LogWriterExporter
{

    [Export(typeof(LogWriter))]
    public LogWriter LogWriter
    {
        get
        {
            return new LogWriter(...);
        }
    }
}

Обратите внимание, что MEF обычно вызывает это свойство get только один раз, за ​​исключением случаев, когда импортер требует CreationPolicy.NonShared. Если вы хотите применить одноэлементное поведение, вы можете явно добавить атрибут [PartCreationPolicy(CreationPolicy.Shared)] в класс.

...