MEF部件的生命周期(PartCreationPolicy)
2015-11-14 17:09
281 查看
一、演示概述
本演示介绍了MEF的生命周期管理,重点介绍了导出部件的三种创建策略,分别是:CreationPolicy.Any、CreationPolicy.Shared、CreationPolicy.NonShared。
相关下载(屏幕录像):http://yunpan.cn/cjZEXHY8N3D6z 访问密码 3912
温馨提示:如果屏幕录像和代码不能正常下载,可站内留言,或发邮件到524130780@QQ.COM
欢迎有兴趣研究.NET相关技术的网友加QQ群:18507443
二、部件创建策略简介
MEF提供的导出部件的三种创建策略,分别如下:
CreationPolicy.Any:表示可共享或不共享,部件的实例用MEF容器根据不同的请求需求自动控制。
CreationPolicy.Shared表示共享部件,既Shared类型的插件部件可以在多个MEF组合容器中共用,而且多次请求该部件返回的其实是同一个对象。
CreationPolicy.NonShared类型,表示不共享部件实例,每当有新的请求就会创建一个新的对象实例。
三、关键代码
下面介绍了如何在导出部件中设置其创建策略,以及导入的时候如何使用。
通过为导出部件添加PartCreationPolicyAttribute特性,可指定其创建策略。代码如下:
[csharp] view plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export(typeof(UserControl))]
public partial class UserControlBB : UserControl
{
public UserControlBB()
{
InitializeComponent();
}
}
在导出部件的时候,可设置导入指定创建策略的部件,比如下面的代码,只导入创建策略为CreationPolicy.Shared的导出部件。
[csharp] view plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
![](https://code.csdn.net/assets/ico_fork.svg)
[ImportMany(RequiredCreationPolicy = CreationPolicy.Shared)]
public List<UserControl> UserControls { get; set; }
四、相关资源
1、MSDN官方资料:http://msdn.microsoft.com/zh-cn/library/dd460648(v=vs.110).aspx
本演示介绍了MEF的生命周期管理,重点介绍了导出部件的三种创建策略,分别是:CreationPolicy.Any、CreationPolicy.Shared、CreationPolicy.NonShared。
相关下载(屏幕录像):http://yunpan.cn/cjZEXHY8N3D6z 访问密码 3912
温馨提示:如果屏幕录像和代码不能正常下载,可站内留言,或发邮件到524130780@QQ.COM
欢迎有兴趣研究.NET相关技术的网友加QQ群:18507443
二、部件创建策略简介
MEF提供的导出部件的三种创建策略,分别如下:
CreationPolicy.Any:表示可共享或不共享,部件的实例用MEF容器根据不同的请求需求自动控制。
CreationPolicy.Shared表示共享部件,既Shared类型的插件部件可以在多个MEF组合容器中共用,而且多次请求该部件返回的其实是同一个对象。
CreationPolicy.NonShared类型,表示不共享部件实例,每当有新的请求就会创建一个新的对象实例。
三、关键代码
下面介绍了如何在导出部件中设置其创建策略,以及导入的时候如何使用。
通过为导出部件添加PartCreationPolicyAttribute特性,可指定其创建策略。代码如下:
[csharp] view plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
[PartCreationPolicy(CreationPolicy.NonShared)]
[Export(typeof(UserControl))]
public partial class UserControlBB : UserControl
{
public UserControlBB()
{
InitializeComponent();
}
}
在导出部件的时候,可设置导入指定创建策略的部件,比如下面的代码,只导入创建策略为CreationPolicy.Shared的导出部件。
[csharp] view plaincopy
![](https://code.csdn.net/assets/CODE_ico.png)
[ImportMany(RequiredCreationPolicy = CreationPolicy.Shared)]
public List<UserControl> UserControls { get; set; }
四、相关资源
1、MSDN官方资料:http://msdn.microsoft.com/zh-cn/library/dd460648(v=vs.110).aspx
相关文章推荐
- Educational Codeforces Round 1 (D) 搜索(优化剪枝)
- struct和typedef struct彻底明白了
- 多线程编程之二——MFC中的多线程开发
- 指针作为函数参数传递
- CentOS 7 WiFi连接
- 遍历容器 Java风格和STL风格 foreach
- phpstorm常用快捷键
- 杭电1072 猜数字
- 用C语言编写函数,实现strlen计算字符串长度的功能
- php工作目录
- cenos7.1 安装openstack kilo 心得之三添加网络时间协议
- VC多线程编程之一——问题提出
- return *this和return this有什么区别?
- vertical-align属性
- 划分型动态规划 之 CODE[VS] 1039 数的划分 2001年NOIP全国联赛提高组
- 总结iOS 多线程学习过程四
- Linux下自定义字符串数组作为文件名,创建文件
- Spark修炼之道(基础篇)——Linux大数据开发基础:第十节:Shell编程入门(二)
- 安卓实现简单的发送短信功能
- java基础一