显然 .NET 4.0 没有用于非 SL 的 PartCreator/ExportFactory。这是我认为我需要的东西。
我想知道是否有人可以帮助我(请举例说明)如何在 DLL 中创建 EXPORTED 类型的多个实例。基本上说我有一个包含类型 ConsoleLogger 的 DLL,它使用接口(interface) ILogger(我通过 MEF 导入/导出)...我将如何创建 ConsoleLogger 的实例?另外..这有可能吗?
最佳答案
一种方法是自己为记录器编写一个工厂,并将其用作您导出的契约(Contract)。
public class Logger : ILogger
{
public Logger(IFoo foo) { }
// ...
}
[Export(typeof(ILoggerFactory))]
public class LoggerFactory : ILoggerFactory
{
[Import]
public IFoo Foo { get; set; }
public ILogger CreateLogger()
{
return new Logger(Foo);
}
}
然后您只需导入一个 LoggerFactory,并在每次需要记录器时调用 CreateLogger。如果您导入了 ExportFactory,这与您所做的几乎相同。缺点是您必须为每个想要创建多个实例的东西编写一个单独的工厂。
另一种选择是将 ExportProvider 添加到您的容器中,以允许您导入工厂。在最新的 MEF 下降 CodePlex ,有一个 DynamicInstantiation 示例展示了如何执行此操作。
关于c# - 单个 MEF DLL 的多个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2878265/