MEF生命周期
MEF生命周期
MEF生命周期分为三种:
ANY:MEF根据自己的需要设置是否共享
Shared:共享部件,可以在多个MEF组合容器中使用
NoShared:不共享部件,每次使用都需要创建实例
在MEF的实现通过PartCreationPolicyAttribute特性实现对部件的生命周期配置。
使用举例:
///导出
using System.ComponentModel.Composition;
namespace MEF0001
{
public interface IMetadata
{
string Name { get;
}
}
public interface ILog
{
string Write();
}
[PartCreationPolicy(CreationPolicy.Any)]
[ExportMetadata("Name", "DBLOG")]
[Export(typeof(ILog))]
public class DBLog : ILog
{
public string Write()
{
return "DBLOG";
}
}
[PartCreationPolicy(CreationPolicy.Shared)]
[ExportMetadata("Name", "TXTLOG")]
[Export(typeof(ILog))]
public class TXTLog : ILog
{
public string Write()
{
return "TXTLog";
}
}
[PartCreationPolicy(CreationPolicy.NonShared)]
[ExportMetadata("Name", "XMLLOG")]
[Export(typeof(ILog))]
public class XMLLog : ILog
{
public string Write()
{
return "XMLLog";
}
}
}
///导入
#region 元数据导入 和 MEF生命周期
[ImportMany(typeof(ILog),RequiredCreationPolicy=CreationPolicy.NonShared)]
public Lazy
public string Run()
{
string value = https://www.it610.com/article/string.Empty;
foreach (var log in Logs)
{
value += log.Metadata.Name + "\n";
}
return value;
}
#endregion
示例代码(该示例代码包括延迟加载和元数据加载及MEF生命周期):http://files.cnblogs.com/Clivia/MEF001.rar
【MEF生命周期】转载于:https://www.cnblogs.com/Clivia/archive/2010/11/12/MEF11.html
推荐阅读
- 活着就是生命的全部意义
- 生命过客——第10章|生命过客——第10章 初为人母
- 生命的活力!2019-05-04好事
- 生命中最迷人的部分轻拿轻放
- 日更82/365珍视生命中的每一刻
- 克里希那穆提《生命书》新译(8月15日)(心与念的二元分裂)
- 投资最重要的事之七——关注周期
- 积极探索|积极探索 绽放生命 ???——心心相印计划:青少年心理工作研讨小组全国大型公益行动第二次活动包头市青山区分校圆满成功
- 感恩生命中的所有遇见
- 努力让自己变得更具生命力