.NET框架设计准则:创建高效类库

3星 · 超过75%的资源 需积分: 34 8 下载量 73 浏览量 更新于2024-07-24 收藏 759KB DOC 举报
"C#类库开发的设计准则是为了确保与.NET Framework交互的库的一致性和易用性。这些准则提供了命名、类型、成员、扩展性和异常设计等方面的指导,旨在促进跨语言的统一编程模型,提高开发人员的工作效率,并避免阻碍代码的相互吸收。" 在设计C#类库时,以下是一些关键的准则和实践: 1. **命名准则**: - **大小写约定**:遵循PascalCase(首字母大写)命名约定,如`MyClassName`。 - **通用命名约定**:使用有意义且一致的词汇,例如`Get`、`Set`等。 - **程序集和DLL的名称**:应清晰反映其功能,例如`MyLibrary.dll`。 - **命名空间**:反映类库的层次结构,如`MyCompany.MyProduct.Library`。 - **类、结构、接口**:使用动词或形容词,如`Calculator`、`ReadOnlyCollection`。 - **类型成员**:遵循PascalCase,如`MyProperty`、`DoSomething`。 - **参数名**:使用描述性的camelCase,如`fileName`。 - **资源的名称**:使用全名,避免缩写。 2. **类型设计准则**: - **类型和命名空间**:确保类型与其所在的命名空间相匹配。 - **类与结构选择**:结构用于小、不可变数据类型,类用于复杂、可变类型。 - **接口与类**:接口定义行为,类实现行为;考虑是否需要多继承。 - **抽象类设计**:用于定义基类型,包含虚方法供子类重写。 - **静态类**:用于提供工具方法,不能实例化。 - **接口设计**:避免包含静态成员、构造函数和实例字段。 - **结构设计**:避免包含引用类型字段以防止不必要的复制。 - **枚举设计**:用于表示一组有限的、互斥的值。 - **设计标志枚举**:使用位运算符进行组合。 3. **成员设计准则**: - **成员重载**:谨慎重载操作符和方法,确保行为一致。 - **显式实现接口成员**:减少接口污染,通常用于实现接口的私有成员。 - **属性与方法**:属性用于数据访问,方法用于执行操作。 - **属性设计**:考虑属性的读写访问权限,以及属性变更通知。 - **索引属性**:用于访问集合或数组元素。 - **构造函数设计**:提供适当的构造函数,包括参数验证。 - **类型构造函数设计**:用于初始化类型,通常是私有的。 - **事件设计**:遵循发布-订阅模式,使用`event`关键字。 - **自定义事件处理程序**:避免使用非委托事件模式。 - **字段设计**:尽量使字段私有,仅在必要时公开。 - **运算符重载**:确保符合数学或逻辑预期,如加法、比较。 - **转换运算符**:谨慎实现,确保安全。 4. **扩展性设计**: - **未密封的类**:允许子类化,除非有明确的理由密封。 - **受保护的成员**:提供扩展点,允许子类访问和修改。 - **事件和回调**:确保回调安全,避免引发问题。 - **虚成员**:允许子类覆盖,增强可扩展性。 - **抽象类型和接口**:作为其他类型的基础,定义公共契约。 5. **异常设计准则**: - **异常引发**:在无法完成操作时抛出异常。 - **选择正确的异常类型**:使用最合适的内置异常,或创建自定义异常。 - **包装异常**:捕获低层异常并重新抛出更具体的异常。 - **错误信息设计**:提供清晰、有用的错误消息。 - **异常处理**:避免在finally块中抛出异常,除非必要。 - **捕捉和引发标准异常类型**:尽量避免捕获和抛出`Exception`。 - **设计自定义异常**:只在需要新的异常类型时创建。 6. **使用准则**: - **数组**:避免返回数组,考虑使用`List<T>`或其他集合类型。 - **属性**:谨慎使用自动属性,考虑属性变更通知和数据绑定。 - **Equals方法**:正确实现以支持对象比较。 - **相等运算符(==)**:与Equals方法一起实现,保持一致性。 - **设计模式**:遵循常见的设计模式,如工厂模式、单例模式等。 - **Finalize和Dispose**:用于释放非托管资源,遵循 Dispose 模式。 - **超时的使用**:在长时间运行操作中考虑超时机制。 遵循这些设计准则,开发者可以创建出高效、易于使用和维护的C#类库,从而提高整个.NET生态系统的质量。
2011-12-02 上传
常用方法类库 一、SR.ShareFunc.DataFunc 1.SR.ShareFunc.DataFunc.DataConvertExcel(Data转Excel文件) 1.1 DataTable转Xls文件 4个重载方法 1.2 DataSet转Xls文件 4个重载方法 2.SR.ShareFunc.DataFunc.DataGridViewFunc(DataGridView方法) 2.1 DataGridView打印 9个重载方法 2.2 DataGridView转Xls文件 4个重载方法 3.SR.ShareFunc.DataFunc.DataTableConvertPdf(DataTable转Pdf文件) 6个重载方法 二、SR.ShareFunc.FormFunc 4.SR.ShareFunc.FormFunc.ControlConvertToForm(Control转Form窗体) 7个重载方法 5.SR.ShareFunc.FormFunc.CreateControlFunc (利用反射(需要制定Dll文件、命名空间)实现实例化、调用) 3个重载方法 三、SR.ShareFunc.RemoteDeskTop 6.SR.ShareFunc.RemoteDeskTop.ucRemoteDeskTop 远程桌面的监控界面控件 原理:利用System.Runtime.Remoting将监控端的鼠标、键盘消息发送到被监控主机, 并将被监控端桌面图片不停发送到监控端显示,从而实现远程桌面 可实现监视、监控,设置监控界面刷新时间 7.SR.ShareFunc.RemoteDeskTop.RemoteDeskTopClient 远程桌面客户端端口注册 四、SR.ShareFunc.StringFunc 8.SR.ShareFunc.StringFunc.RandomStrings 8.1 按照指定最大值、最小值、个数,随机生成数组 8.2 按照指定最大值、最小值、个数,随机生成字符格式的数字 9.SR.ShareFunc.StringFunc.StringEncryFunc 9.1 Dec方式加密 9.2 Dec方式解密 9.3 MD5加密 10.SR.ShareFunc.StringFunc.ValidateUnUsedCode 常用验证非法字符、格式转化 五、SR.ShareFunc.WinFunc 11.SR.ShareFunc.WinFunc.FileFunc 11.1 系统垃圾文件清理 11.2 文件的文件名、后缀名、文件路径的处理 11.3 同名文件的处理(用于自动在同名文件后增加字符) 12.SR.ShareFunc.WinFunc.LogFunc 按照指定路径、文件名生成日志信息 13.SR.ShareFunc.WinFunc.MouseMoveControl 给指定控件绑定鼠标移动事件,例如Label绑定后,鼠标点击该Label可进行窗体拖拽 或实现自定义的窗体拖拽 14.SR.ShareFunc.WinFunc.MsgShowFunc 自定义的Windows消息窗体,主要能显示错误代码显示。5个重载方法 15.SR.ShareFunc.WinFunc.SystemHotKey Windows全局钩子(系统热键),可以实现自定义的系统热键处理 16.SR.ShareFunc.WinFunc.WaitFormFunc 16.1 等待窗体显示(可指定显示的消息) 16.2 等待窗体关闭 17.SR.ShareFunc.WinFunc.WindowsFuns 17.1 Windows注销、重启、关机 17.2 获取Windows系统中硬件设备信息,如主板、网卡等 17.3 获取各种格式的系统时间、农历时间 17.4 获取Windows系统屏幕大小、系统剪贴板操作 六、SR.ShareFunc.XmlFunc 18.SR.ShareFunc.XmlFunc.XmlCommonFunc Xml文件操作