ITPub博客

首页 > 应用开发 > > MEF为什么GetExports()为什么会一直不返回

MEF为什么GetExports()为什么会一直不返回

作者:amadan 时间:2019-08-22 16:06:41 0 删除 编辑
public interface IProtocol
{
/// <summary>
/// 下载事件
/// </summary>
event DownloadEventHanlder DownloadEvent;
/// <summary>
/// 下载数据
/// </summary>
/// <param name="datas"></param>
void DownloadDatas(byte[] datas);
}

public interface IProtocolMessage
{
/// <summary>
/// 协议版本
/// </summary>
string Version { get; set; }
}
定义了两个插件接口,然后一个抽象类DeviceNetAdapterBase继承这个接口

public abstract class DeviceNetAdapterBase : IProtocol
{
//中间代码
}
最后实现类  

    [Export(typeof(IProtocol))]
    [ExportMetadata("Version", "1.0.0.1")]
    public class MGProtocol : DeviceNetAdapterBase
    {
          //中间代码实现
    }

最后在加载这个插件

//StaticConfig.Config.PlugDir是生成的插件放dll的目录
var directoryNetPlugCatalog = new DirectoryCatalog(StaticConfig.Config.PlugDir, "*.dll");
//
var containerProtocol = new CompositionContainer(directoryNetPlugCatalog);

//这里导出插件。其实定义的全局的,为了看的清放到这里,也就是这里就卡住了一直不返回值,这个函数就走不下去了
private IEnumerable<Lazy<IProtocol,IProtocolMessage>> protocalHanders = containerProtocol.GetExports<IProtocol, IProtocolMessage>();

也不知道为什么,我有两种接口的插件放到不同目录下,起初以为是两种插件要导入的原因,但是现在把另一个已经注释了,就剩下这个也不行。一直在GetExports这里卡住不返回。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2310/viewspace-3146469/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: VC++6.0怎么使用
请登录后发表评论 登录
全部评论

注册时间:2019-08-06

  • 博文量
    200
  • 访问量
    14421