繁体   English   中英

单个MEF DLL的多个实例

[英]Multiple Instances of a single MEF DLL

显然.NET 4.0没有非SL的PartCreator / ExportFactory。 这是我认为我需要的东西。

我想知道是否有人可以帮助我(请举例说明)如何在DLL中创建EXPORTED类型的多个实例。 基本上我说我有一个包含ConsoleLogger类型的DLL,它使用接口ILogger(我通过MEF导入/导出)...我怎么会在想要的时候创建一个ConsoleLogger实例? 也..这甚至可能吗?

一种方法是自己为记录器编写工厂,并将其用作导出的合同。

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添加到容器中,以允许您导入工厂。 CodePlex的最新MEF下降中,有一个DynamicInstantiation示例,它显示了如何执行此操作。

MEF 2 Preview 1将ExportFactory引入.NET 3.5和4.0:

  • ExportFactory从SL移动到.net
  • 桌面版一些代码
  • 重构和性能改进
  • 代码合同两个程序集都是
  • 强名称签名

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM