繁体   English   中英

使用MEF动态加载接口

[英]Dynamically loading interfaces with MEF

我有以下3个界面:

    public interface IWcfSvc

    public interface IAdventureWorks : IWcfSvc
    public interface INorthwind : IWcfSvc

它们都在自己的程序集中。 我想知道的是,如何使用MEF加载IAdventureWorks和INorthwind? 如您可能已经了解的那样,IWcfSvc是WCF将用作ServiceContracts的所有其他接口的默认接口。

到目前为止,我已经可以将MEF用于一个特定的接口,但是我想使其动态化,因为WCF服务将是自托管的,并且有可能在不更改自托管核心的情况下添加新服务。服务。

这种情况使我想起了在Visual Studio SDK中注册IClassifierProvider的方式。 尽管可能在整个Visual Studio及其许多扩展程序中导出许多分类器提供程序,但通常只有极少数(也许只有一个)适用于您打开进行编辑的任何单个文档。 为了将特定的IClassifierProvider导出与有限数量的文档相关联,将元数据属性应用于导出,例如,如下所示:

[Export(typeof(IClassifierProvider))]
[ContentType("My Content Type")]
public class MyClassifierProvider : IClassifierProvider

元数据属性在MEF中是高效且得到良好支持的。 在您的应用程序中,可以通过以下方式之一将它们公开给用户:

  1. 使用标准的ExportMetadataAttribute属性。 如果Visual Studio做到了这一点,它可能看起来像下面的样子。

     [Export(typeof(IClassifierProvider))] [ExportMetadata("Content Type", "My Content Type")] public class MyClassifierProvider : IClassifierProvider 
  2. 创建反映您希望扩展提供的特定元数据的自定义属性。

暂无
暂无

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

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