博客
关于我
[MEF]第02篇 MEF的导入导出契约
阅读量:525 次
发布时间:2019-03-08

本文共 921 字,大约阅读时间需要 3 分钟。

二、关键代码

只包含导出协议名称的导出:

[Export("Oracal")] public class OracalLogger : ILogger{    public void WriteLog(string message)    {        Console.WriteLine("Oracal Logger => {0}", message);    }}

相应的导入代码为:

[Import("Oracal")]public OracalLogger OracalLogger { get; set; }

这里,属性的类型是OracalLogger,而不是ILogger。类型不匹配会导致导入失败。

只包含导出类型的导出:

[Export(typeof(ILogger))] public class TxtLogger : ILogger{    public void WriteLog(string message)    {        Console.WriteLine("Text Logger => {0}", message);    }}

相应的导入代码为:

[Import(typeof(ILogger))]public ILogger TextLogger { get; set; }

在这种情况下,导内的类型必须与导出类型一致,否则无法注入成功。

既不包含导出类型也不包含导出协议名的导出:

[Export]public class XmlLogger : ILogger{    public void WriteLog(string message)    {        Console.WriteLine("Xml Logger => {0}", message);    }}

此时,协议名为默认协议,类型与被修饰的类一致。相应的导入代码为:

[Import]public XmlLogger XmlLogger { get; set; }

注意,导入时必须确保属性的类型与导出类型完全一致,否则会导致导入失败。

三、相关资源

  • MSDN官方资料
  • 其他参考文献,可参考相关技术论坛和文档。

转载地址:http://uqviz.baihongyu.com/

你可能感兴趣的文章
前端学习之路
查看>>
008.Python基础语法(七)——序列数据类型
查看>>
centos 7 使用 163 yum 源
查看>>
Linux稀疏文件查看实际占用空间
查看>>
Python 强大的try-except-pass
查看>>
Weblogic 10.3.6 账户登录密码错误默认锁定策略
查看>>
Skype 与 Skype for Business 之间有何区别?
查看>>
使用AIDE检查完整性
查看>>
1534. 统计好三元组
查看>>
数据库图形化客户端工具DBeaver
查看>>
Unity3D看得见_游戏中的图形渲染优化_经典实用
查看>>
真Unity3d_屏幕UI_2d转3d纯代码
查看>>
vscode中快速生成vue模板
查看>>
HTML5 Web Storage
查看>>
Windows上CLion的配置
查看>>
210所高校21届保研率曝光!这些211保研率堪比985!
查看>>
uniapp配置去掉友盟无法打包,提示配置错误如何解决
查看>>
网狐客户端-win32
查看>>
Ubuntu 20.10 QT 5.12.2 cannot find -lGL错误解决
查看>>
QT报make: Circular all <- first dependency dropped.错误解决。
查看>>