当前位置: 首页 > news >正文

Extensions 扩展库

12. Extensions 扩展库

位置:Source/Extensions

分类速查:

类型项目示例
应用/MVVMH.Extensions.ApplicationBaseH.Extensions.MvvmH.Extensions.CommandH.Extensions.Behvaiors
数据/序列化H.Extensions.DataBaseH.Extensions.DataBase.RepositoryH.Extensions.XmlSerializeH.Extensions.NewtonsoftJson
文件/路径/进程H.Extensions.AppPathH.Extensions.OpenFolderDialogH.Extensions.ZipH.Extensions.Process
UI/视觉H.Extensions.AnimationsH.Extensions.StoryBoardH.Extensions.ColorH.Extensions.GeometryH.Extensions.FontIcon
业务支持H.Extensions.ExcelH.Extensions.EncryptionH.Extensions.MailH.Extensions.HttpH.Extensions.ValidationH.Extensions.Revertible

看扩展库时,优先找Extension.csExtention.cs,它通常是使用入口。


Extensions 扩展库详解

一、扩展库概述

Source/Extensions是 WPF-Control 的工具方法集合,提供各种实用的扩展方法和辅助功能。这些扩展库遵循"即插即用"的设计理念,通过静态方法或扩展方法的形式提供服务。

核心特点:扩展库通常以Extension.csExtention.cs作为入口,方便快速查找和使用。


二、扩展库分类速查

2.1 分类总览

类型项目示例功能说明
应用/MVVMH.Extensions.ApplicationBase应用启动基座
H.Extensions.MvvmMVVM 辅助方法
H.Extensions.Command命令扩展
H.Extensions.Behvaiors行为扩展
数据/序列化H.Extensions.DataBase数据库基础
H.Extensions.DataBase.Repository仓储模式
H.Extensions.XmlSerializeXML 序列化
H.Extensions.NewtonsoftJsonJSON 序列化
文件/路径/进程H.Extensions.AppPath应用路径服务
H.Extensions.OpenFolderDialog文件对话框
H.Extensions.Zip压缩解压
H.Extensions.Process进程管理
UI/视觉H.Extensions.Animations动画效果
H.Extensions.StoryBoard故事板
H.Extensions.Color颜色处理
H.Extensions.Geometry几何图形
H.Extensions.FontIcon字体图标
业务支持H.Extensions.ExcelExcel 操作
H.Extensions.Encryption加密解密
H.Extensions.Mail邮件发送
H.Extensions.HttpHTTP 请求
H.Extensions.Validation数据验证
H.Extensions.Revertible撤销重做

三、核心扩展库详解

3.1 H.Extensions.Common - 通用扩展

这是最常用的扩展库,包含大量基础工具方法。

文件操作扩展
// 判断文件类型stringfilePath="image.jpg";boolisImage=filePath.IsImage();// trueboolisVideo=filePath.IsVedio();// falseboolisAudio=filePath.IsAudio();// false// 获取目录中的文件stringfolder=@"C:\Images";IEnumerable<string>images=folder.GetAllImages();// 获取所有图片// 文件大小显示stringsize=filePath.ToFileEx().GetFileSizeToDisplay();// "2.50MB"

DirectoryEx 增强类

// 创建目录(不存在时)folder.ToDirectoryEx().CreateDirectoryIfNotExsit();// 备份目录folder.ToDirectoryEx().BackupToDirectory(@"C:\Backup",log=>Console.WriteLine(log));// 获取所有文件(带过滤)List<string>files=folder.ToDirectoryEx().GetAllFiles(file=>file.Size>1024,// 文件过滤条件dir=>!dir.Name.StartsWith(".")// 目录过滤条件);
路径操作扩展
stringpath=@"C:\Users\Admin\Documents\file.txt";// 获取路径信息stringfileName=path.GetFileName();// "file.txt"stringnameWithoutExt=path.GetFileNameWithoutExtension();// "file"stringdirectory=path.GetDirectoryName();// "C:\Users\Admin\Documents"stringextension=path.GetExtension();// ".txt"// 获取相对路径stringrelative=path.GetRelativePath(@"C:\Users\Admin");// "Documents\file.txt"

3.2 H.Extensions.Command - 命令扩展

提供各种预定义命令,简化命令创建。

MessageCommand:带状态反馈的命令

publicclassMyViewModel:BindableBase{publicICommandProcessCommand{get;}publicMyViewModel(){ProcessCommand=newMessageCommand((command,parameter)=>{// 执行耗时操作Thread.Sleep(3000);// 命令会自动设置 Message 和 IsBuzycommand.Message="处理完成";});}}

命令特性

  • IsBuzy- 是否正在执行
  • Message- 当前状态消息
  • Exception- 异常信息(如果有)

3.3 H.Extensions.Color - 颜色扩展

提供颜色转换和处理功能。

// 十六进制转颜色stringhex="#FF5733";System.Windows.Media.Colorcolor=hex.ToHexColorEx().ToColor();// 颜色工厂ColorFactoryfactory=newColorFactory();List<Color>colors=factory.GetStandardColors();// 获取标准颜色

3.4 H.Extensions.Encryption - 加密扩展

提供加密解密服务。

// 注册服务services.AddDESCryptService();// 使用服务ICryptServicecryptService=Ioc.GetService<ICryptService>();stringencrypted=cryptService.Encrypt("secret data");stringdecrypted=cryptService.Decrypt(encrypted);

3.5 H.Extensions.Animations - 动画扩展

提供过渡动画效果。

// 创建动画Transitionablestransition=newTransitionables();// 透明度动画OpacityTransitionableopacity=newOpacityTransitionable();opacity.From=0;opacity.To=1;opacity.Duration=TimeSpan.FromSeconds(0.5);// 缩放动画ScaleTransitionablescale=newScaleTransitionable();scale.From=newPoint(0.5,0.5);scale.To=newPoint(1,1);// 应用到元素myElement.SetTransitionable(transition);

四、扩展库使用模式

4.1 静态方法调用

// 文件操作string[]files="C:\\MyFolder".GetFiles();// 路径操作stringfileName=path.GetFileName();// 颜色转换Colorcolor="#FF0000".ToHexColorEx().ToColor();

4.2 服务注册模式

// 在 ConfigureServices 中注册protectedoverridevoidConfigureServices(IServiceCollectionservices){// 注册加密服务services.AddDESCryptService();// 注册应用路径服务services.AddAppPathService();// 注册验证服务services.AddValidationService();}

4.3 命令绑定模式

// 在 ViewModel 中定义命令publicICommandMyCommand{get;}publicMyViewModel(){MyCommand=newMessageCommand((cmd,param)=>{// 执行逻辑});}
<!-- 在 XAML 中绑定 --><ButtonCommand="{Binding MyCommand}"Content="执行"/>

五、实际应用案例

5.1 案例一:文件管理

publicasyncTaskProcessFilesAsync(stringfolderPath){// 获取所有图片varimages=folderPath.GetAllImages();foreach(stringimagePathinimages){// 获取文件信息FileExfileEx=imagePath.ToFileEx();stringfileName=imagePath.GetFileName();stringsize=fileEx.GetFileSizeToDisplay();// 处理文件awaitProcessImageAsync(imagePath);}}

5.2 案例二:数据加密存储

publicclassSecureSettingsService{privatereadonlyICryptService_cryptService;publicSecureSettingsService(ICryptServicecryptService){_cryptService=cryptService;}publicvoidSaveSecureData(stringkey,stringdata){stringencrypted=_cryptService.Encrypt(data);Properties.Settings.Default[key]=encrypted;Properties.Settings.Default.Save();}publicstringLoadSecureData(stringkey){stringencrypted=Properties.Settings.Default[key]asstring;return_cryptService.Decrypt(encrypted);}}

5.3 案例三:带状态的异步命令

publicclassDataImportViewModel:BindableBase{privatestring_status;publicstringStatus{get=>_status;set{_status=value;RaisePropertyChanged();}}privatebool_isBusy;publicboolIsBusy{get=>_isBusy;set{_isBusy=value;RaisePropertyChanged();}}publicICommandImportCommand{get;}publicDataImportViewModel(){ImportCommand=newMessageCommand(async(cmd,param)=>{Status="正在导入...";try{// 执行导入操作awaitImportDataAsync();Status="导入成功";}catch(Exceptionex){Status=$"导入失败:{ex.Message}";}});}privateasyncTaskImportDataAsync(){// 模拟耗时操作awaitTask.Delay(3000);}}

六、扩展库查找技巧

6.1 快速定位入口文件

Source/Extensions/ ├── H.Extensions.Common/ │ ├── Extension.File.cs # 文件操作入口 │ ├── Extension.Path.cs # 路径操作入口 │ └── Extension.Object.cs # 对象操作入口 ├── H.Extensions.Command/ │ └── Command.Message.cs # 消息命令入口 ├── H.Extensions.Color/ │ └── Extesion.Color.cs # 颜色操作入口 └── H.Extensions.Encryption/ └── Extention.cs # 加密服务入口

6.2 命名约定

文件命名说明
Extension.*.cs静态扩展方法
Extention.*.cs服务注册扩展
Command.*.cs命令定义
*Service.cs服务实现

七、最佳实践

7.1 使用扩展方法

// ✅ 推荐:使用扩展方法stringfileName=path.GetFileName();// ❌ 不推荐:直接调用静态方法stringfileName=Path.GetFileName(path);

7.2 服务注册

// ✅ 推荐:使用扩展方法注册services.AddDESCryptService();// ❌ 不推荐:手动注册services.AddSingleton<ICryptService,DESCryptService>();

7.3 命令使用

// ✅ 推荐:使用预定义命令ICommandcommand=newMessageCommand(ExecuteLogic);// ✅ 推荐:绑定到 UI<ButtonCommand="{Binding MyCommand}"/>

八、总结

Extensions 扩展库是 WPF-Control 的工具集合,提供了丰富的实用方法:

  1. Common:文件、路径、对象等基础操作
  2. Command:各种预定义命令
  3. Color:颜色处理
  4. Encryption:加密服务
  5. Animations:动画效果

使用扩展库的核心要点:

  • 优先查找Extension.csExtention.cs文件
  • 使用扩展方法简化代码
  • 通过AddXXX模式注册服务
  • 结合 IOC 容器使用服务

掌握这些扩展库,可以大大提高开发效率,减少重复代码。

http://www.cnnetsun.cn/news/2499130.html

相关文章:

  • 【Midjourney包豪斯风格实战指南】:20年设计+AI专家亲授7大构图法则与5类禁用提示词清单
  • UE5 Pak文件结构解析与FModel模型提取实战指南
  • MTK-Android12-系统设置一级菜单-适配遥控器
  • 【限时解密】ElevenLabs未公开的瑞典文语料权重配置表:仅限前200名开发者获取的/sv-SE/声道微调参数
  • AI翻唱魔法师:5分钟免费打造专业级AI音乐作品的终极指南
  • 系统设计:十万级并发电商商品详情页,如何设计
  • 使用 Taotoken CLI 工具一键配置团队开发环境中的模型接入参数
  • 从TTL到差分信号:手把手图解RS232/RS485电平转换电路,避坑STM32串口配置
  • 2026 高炉炼铁智能化技术全景与演进路径~系列文章00:高炉炼铁智能化的产业变革与2026技术全景
  • Product Hunt 每日热榜 | 2026-05-21
  • 安科士(AndXe)QSFP+ 40G SR4 光模块:数据中心短距高速互联的理想之选
  • 以图灵机为喻!交互式教程助开发者理解CRDT工作原理
  • 黑客教你月入过万小技巧:SRC漏洞挖掘_怎么挖漏洞赚钱
  • VR安全带防坠落体验平台助力高空作业安全培训
  • 程序员需求攀升:数字化浪潮下的行业必然
  • LangGraph 并发执行:为什么你的多 Agent 总是“一个卡住全军覆没”?
  • 小资金期货量化用什么软件:成本敏感型的现实选项
  • 2026 年苏州地面互动品牌,创新魅力等你来发现!
  • 旅游应该注意什么
  • 【ai员工】windows Pixelle Studio 部署并运行
  • 抖音批量下载器终极指南:3步轻松搞定无水印视频下载
  • Layerdivider智能图像分层工具:3分钟搞定专业PSD分层的终极指南
  • 顶级研究员Karpathy跳槽Anthropic,押注预训练,AI行业格局或生变?
  • 技术架构深度剖析:如何构建专业的浏览器资源嗅探扩展
  • 如何管理Taotoken的API Key并设置访问控制与审计日志
  • 野兽派≠高饱和!20年数字绘画师逆向工程MJ底层渲染管线,发现3类被官方文档隐瞒的风格触发器
  • JeecgBoot 双流程引擎选型指南:协同工作 vs Flowable,别再用错了!
  • 2026年阿里云OpenClaw/Hermes Agent配置Token Plan搭建保姆教程
  • Windows 11终极优化指南:用Win11Debloat免费提升电脑性能55%
  • 【Android】Apktool M安卓逆向反编译工具必备 可一定程度平替mt管理器