網站首頁 編程語言 正文
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-11-23 Python?threading模塊中lock與Rlock的使用詳細講解_python
- 2023-12-08 IDEA中, Maven不顯示插件 mybatis-generator
- 2021-12-18 通俗易通講解Android藍牙鍵值適配_Android
- 2022-08-31 C++?OpenCV裁剪圖片時發生報錯的解決方式_C 語言
- 2022-12-26 使用python如何對圖片進行壓縮_python
- 2022-09-17 ASP.NET?Core項目中集成TypeScript_實用技巧
- 2023-11-16 當pytorch找不到 CUDA 時,如何修復錯誤:版本 libcublasLt.so.11 未在帶
- 2023-02-27 c++數組排序的5種方法實例代碼_C 語言
- 最近更新
-
- 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同步修改后的遠程分支