網站首頁 編程語言 正文
Managed Extensibility Framework(MEF)是微軟的一個用來擴展.NET應用程序的框架,它最初為了滿足Visual Studio里的編輯器的需求,比如說,延遲加載所有東西和細粒度協定。隨著托管代碼慢慢地取代基于COM的擴展模型,MEF框架也逐漸成型。
MEF是在Codeplex上開源的,并且現在已經是.Net 4.0的一部分。我們可以用它非常容易的實現插件框架。一個簡單的示例如下(使用時需要添加System.ComponentModel.Composition.dll 的引用):?
class Program
{
[Import]
ILogger logger;
void Compose()
{
var catalog = new AssemblyCatalog(this.GetType().Assembly);
var container = new CompositionContainer(catalog);
container.ComposeParts(this);
}
public static void Main(string[] args)
{
var p = new Program();
p.Compose();
p.logger.LogMessage("hello world");
}
}
interface ILogger
{
void LogMessage(string msg);
}
[Export(typeof(ILogger))]
class ConsoleLogger : ILogger
{
public void LogMessage(string msg)
{
Console.WriteLine(DateTime.Now + ": " + msg);
}
}
這個例子比較簡單,并不能很好的體現MEF帶來的便利,MS官方的一個稍微復雜點的例子SimpleCalculator更合適一些。
不過,從這個例子中也可以看出MEF的基本工作方式:服務方通過ExportAttribute導出可提供的服務,使用者通過ImportAttirbute導入所需要的服務。它們之間彼此隔離而獨立,服務對象的創建由MEF框架完成,并能提供單例、延遲加載等特性,而無須我們顯式編碼實現。
原文鏈接:https://www.cnblogs.com/tianfang/p/3250784.html
相關推薦
- 2022-05-24 ASP.NET?MVC使用異步TPL模式_實用技巧
- 2023-05-26 解讀tf.keras.layers模塊中的函數_python
- 2022-05-13 linq中的聚合操作符_實用技巧
- 2022-09-26 React?Native?中添加自定義字體的方法_React
- 2022-06-12 C語言?詳細解析時間復雜度與空間復雜度_C 語言
- 2022-04-28 C++實現簡單班級成績管理系統_C 語言
- 2022-04-19 C語言庫函數qsort及bsearch快速排序算法使用解析_C 語言
- 2022-06-16 golang?gorm的預加載及軟刪硬刪的數據操作示例_Golang
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支