[英]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中是高效且得到良好支持的。 在您的应用程序中,可以通过以下方式之一将它们公开给用户:
使用标准的ExportMetadataAttribute
属性。 如果Visual Studio做到了这一点,它可能看起来像下面的样子。
[Export(typeof(IClassifierProvider))] [ExportMetadata("Content Type", "My Content Type")] public class MyClassifierProvider : IClassifierProvider
创建反映您希望扩展提供的特定元数据的自定义属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.