# common-tool **Repository Path**: jiushidt/common-tool ## Basic Information - **Project Name**: common-tool - **Description**: No description available - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-06 - **Last Updated**: 2025-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: dotNET, Csharp ## README # 说明 本项目旨在为各种小功能提供一个统一的平台,可以视其为一个工具箱。命令行形式。 底层框架升级为net8实现。 # 使用方法 ## 普通用户 ~~~ CommonTool -h 可以显示所有工具命令 ~~~ 或者执行CommonTool后,输入: ~~~ help ~~~ 每个命令也可以有自己的帮助信息,一般设为: -h 输入q/quit退出 ## 开发人员 工具箱本身是由CommandRunner实现的,它的主要功能有: * 收集所有的命令 * 作为代理调用命令 * 实现基础的help和退出功能 收集命令主要有两个渠道: * 在LocalCommandManager类中使用CommandAttribute属性标识的方法,这些方法一般作为第三方功能的代理或是一些简单的功能。收集功能由LocalCommandManager实现。 > LocalCommandManager采用反射的方式收集自身包含的命令方法,在这里添加的方法最好是非常通用的功能。 * 实现ICommandProvider接口的类,这种方法一般是我们自己实现的功能。收集功能由ImportedCommandManager类实现。 > ImportedCommandManager采用MEF来收集所有出现在运行目录中的dll里实现了ICommandProvider接口的类。推荐。 ### 集成方式 1. 在CommonTool.LocalCommandManager内注册方法信息 2. 实现ICommandProvider,支持类库或者程序集成,打包到CommonTool运行目录下的tools目录 CommonBase.BaseCommandProvider提供了默认的基础实现,对-h进行了识别,可以在实现时继承 # 技术实现 采用MEF进行组件扩展([Managed Extensibility Framework (MEF) - .NET Framework | Microsoft Learn](https://learn.microsoft.com/zh-cn/dotnet/framework/mef/)) 采用自定义属性注解进行扫描注册([利用特性扩展元数据 | Microsoft Learn](https://learn.microsoft.com/zh-cn/dotnet/standard/attributes/)) [System.ComponentModel.Composition](https://www.nuget.org/packages/System.ComponentModel.Composition)