目录:
System.ComponentModel
特性命名空间与常用类
System.ComponentModel.DataAnnotations
ComponentModel - Classes 类
ComponentModel - Structs 结构体
ComponentModel - Interfaces 界面
ComponentModel - Enums 枚举
ComponentModel - Delegates 委托
内容更新中
1,System.ComponentModel
System.ComponentModel 命名空间提供用于实现组件和控件的运行时和设计时行为的类。 此命名空间包括用于特性和类型转换器的实现、数据源绑定和组件授权的基类和接口。
C# 语法优美,特性注释是其中一项,其使用特点如下图。
笔者在学习 ASP.NET Core 时,有很多大神的代码很多地方使用的特性,特性种类很多,o((⊙﹏⊙))o. 有时会很懵逼。所以笔者根据微软的资料整理一下(大部分Copy官方文档)。
此命名空间中的类将划分为以下类别:
核心组件类。 Component, IComponent, Container,和IContainer类。
组件授权。 License, LicenseManager, LicenseProvider,和LicenseProviderAttribute类。
特性。 Attribute 类。
说明符和持久性。 TypeDescriptor, EventDescriptor,和PropertyDescriptor类。
类型转换器。 TypeConverter 类。
之前笔者把一些东西混肴了,类型 [Required] [MaxLength] 这些特性,本质是类,有其构造函数、方法。
ComponentModel 命名空间提供了 System.ComponentModel.DataAnnotations,此命名空间包含数据操作的特性。
后面会详细解释。
2,特性命名空间与常用类
[Required] [MaxLength] 等特性,存储在命名空间 System.ComponentModel.DataAnnotations 中,笔者列出其他命名空间:
命名空间 | 描述 |
System.ComponentModel.Design | 命名空间包含的类可供开发人员用来为组件生成自定义的设计时行为,以及在设计时配置组件所需的用户界面。 设计时环境提供了使开发人员能够安排组件并配置它们的属性的系统。 某些组件可能需要特定的设计时仅有的行为,才能在设计时环境中正常运行。 同时,提供自定义用户界面来帮助开发人员配置组件或复杂数据类型的值,这可能也非常也用。 在此命名空间中定义的类和接口可用于生成组件的设计时行为、访问设计时服务,以及实现自定义的设计时配置接口。 |
System.ComponentModel.Composition | 此命名空间提供构成托管扩展框架 (MEF) 的类的核心的类 |
System.ComponentModel.DataAnnotations | 命名空间提供定义 ASP.NET MVC 和 ASP.NET 数据控件的类的特性 |
System.ComponentModel.Design.Data | 命名空间包含的类可用于为数据相关的组件生成自定义设计时行为 |
System.ComponentModel.Design.Serialization | 命名空间提供在设计时对序列化进行自定义和控制的类型 |
System.ComponentModel.Composition.Hosting | 命名空间提供 Managed Extensibility Framework (MEF) 类型,这些类型对可扩展应用程序的开发人员或宿主都很有用 |
System.ComponentModel.DataAnnotations.Schema | 命名空间为用于定义 ASP.NET MVC 和 ASP.NET 数据控件的元数据的类的特性提供支持 |
System.ComponentModel.Composition.Primitives | 此命名空间提供作为 MEF 编程模型基础的基元类型 |
System.ComponentModel.Composition.Registration | 命名空间包含启用可管理的扩展性框架 (MEF)部件的基于规则的配置的类型 |
System.ComponentModel.Composition.ReflectionModel | 命名空间为使用基于反射的编程模型的设计者提供 Managed Extensibility Framework (MEF) 类型 |
以上内容不能在 System.ComponentModel 命名空间找到,他们都是独立的命名空间。
下面笔者把 System.ComponentModel.DataAnnotations 的特性都列举出来。
3,System.ComponentModel.DataAnnotations
官方的描述是 命名空间提供定义 ASP.NET MVC 和 ASP.NET 数据控件的类的特性。
这个是我们在网站开发时经常遇到的。在实际使用中,我们可以在控制台、Winform 等项目的 Model 中加此特性,控制属性输入。然而并不是说在控制台也是也能生效,只是能够用到。后面会解释到。
此命名空间的特性包含 [Required]、[Response]、[Phone] 等 ASP.NET Core 数据验证常用的特性。
使用示例(使用时忽略后面的 Attribute )
using System.ComponentModel.DataAnnotations; namespace XFAISDK.Model.Response { public class ResponseModel { [Required] public int Code { get; set; } public string Result { get; set; } public dynamic Data { get; set; } } }
由于 System.ComponentModel.DataAnnotations 命名空间的特性较多,笔者只以 Required 示范。
Required
[Required] 指定数据字段值是必需的,用户输入时不能为空。
他有多种使用形式,
属性
使用方法如下
[Required(ErrorMessage = "Title is required.")] public object Title;
其他属性还有:
AllowEmptyStrings | 获取或设置一个值,该值指示是否允许空字符串。 |
ErrorMessage | 获取或设置一条在验证失败的情况下与验证控件关联的错误消息。 (Inherited from ValidationAttribute) |
ErrorMessageResourceName | 获取或设置错误消息资源的名称,在验证失败的情况下,要使用该名称来查找ErrorMessageResourceType 属性值。 (Inherited from ValidationAttribute) |
ErrorMessageResourceType | 获取或设置在验证失败的情况下用于查找错误消息的资源类型。 (Inherited from ValidationAttribute) |
ErrorMessageString | 获取本地化的验证错误消息。 (Inherited from ValidationAttribute) |
RequiresValidationContext | 获取指示特性是否要求验证上下文的值。 (Inherited from ValidationAttribute) |
TypeId | 在派生类中实现时,获取此 Attribute 的唯一标识符。 (Inherited from Attribute) |
方法
Equals(Object) | 返回一个值,该值指示此实例是否与指定的对象相等。 (Inherited from Attribute) |
FormatErrorMessage(String) | 基于发生错误的数据字段对错误消息应用格式设置。 (Inherited from ValidationAttribute) |
GetHashCode() | 返回此实例的哈希代码。 (Inherited from Attribute) |
GetType() | 获取当前实例的 Type。 (Inherited from Object) |
GetValidationResult(Object, ValidationContext) | 检查指定的值对于当前的验证特性是否有效。 (Inherited from ValidationAttribute) |
IsDefaultAttribute() | 在派生类中重写时,指示此实例的值是否是派生类的默认值。 (Inherited from Attribute) |
IsValid(Object) | 检查必填数据字段的值是否不为空。 |
IsValid(Object, ValidationContext) | 根据当前的验证特性来验证指定的值。 (Inherited from ValidationAttribute) |
Match(Object) | 当在派生类中重写时,返回一个指示此实例是否等于指定对象的值。 (Inherited from Attribute) |
MemberwiseClone() | 创建当前 Object 的浅表副本。 (Inherited from Object) |
ToString() | 返回表示当前对象的字符串。 (Inherited from Object) |
Validate(Object, String) | 验证指定的对象。 (Inherited from ValidationAttribute) |
Validate(Object, ValidationContext) | 验证指定的对象。 (Inherited from ValidationAttribute) |
其方法大多数是继承基类的,使用方法如下
public class ResponseModel { RequiredAttribute RequiredTest = new RequiredAttribute(); public string TestA(object a) { if (RequiredTest.Match(a)) { return "true"; } return "false"; } [Required()] public int Code { get; set; } public string Result { get; set; } public dynamic Data { get; set; } } }
相互转换的类型转换器。 | |
为 Refreshed 事件提供数据。 | |
指示关联的属性值更改时应刷新属性网格。 此类不能被继承。 | |
指定在安装程序集时是否应调用 Visual Studio 自定义操作安装程序或 Installutil.exe (安装程序工具)。 | |
为 MethodName | |
提供用于在 8 位无符号整数对象与字符串之间实现相互转换的类型转换器。 | |
指定何时可将组件属性绑定到应用程序设置。 | |
提供将单精度浮点数字对象与各种其他表示形式相互转换的类型转换器。 | |
表示 SortDescription 对象的集合。 | |
提供用于在字符串对象与其他表示形式之间实现相互转换的类型转换器。 | |
提供方法来验证计算机名称和路径是否符合特定语法。 此类不能被继承。 | |
提供将 TimeSpan 对象与其他表示形式相互转换的类型转换器。 | |
表示工具箱项的特性。 | |
为工具箱项指定要使用的筛选器字符串和筛选器类型。 | |
提供一种将值的类型转换为其他类型以及访问标准值和子属性的统一方法。 | |
表示一个 | |
表示值的集合。 | |
指定对于此属性绑定到的对象要使用哪种类型作为转换器。 | |
向 TypeDescriptor 提供补充元数据。 | |
指定类的自定义类型说明提供程序。 此类不能被继承。 | |
提供有关组件特征的信息,如组件的特性、属性和事件。 此类不能被继承。 | |
提供可用于在列表框中填充可用类型的类型转换器。 | |
提供用于在 16 位无符号整数对象与其他表示形式之间实现相互转换的类型转换器。 | |
提供用于在 32 位无符号整数对象与其他各种表示形式之间实现相互转换的类型转换器。 | |
提供用于在 64 位无符号整数对象与其他表示形式之间实现相互转换的类型转换器。 | |
指定按警告(而不是错误)处理的异常。 | |
引发 Win32 错误代码异常。 |
5,Structs 结构体
SortDescription | 定义要用作集合的排序条件的方向和属性名。 |
6,Interfaces 界面
IBindingList | 提供在绑定到数据源时支持复杂方案和简单方案所需的功能。 |
IBindingListView | 通过提供高级排序和筛选功能来扩展 IBindingList 接口。 |
ICancelAddNew | 在向集合添加新项时添加事务性功能。 |
IChangeTracking | 定义用于查询对象的更改和重置已更改状态的机制。 |
ICollectionView | 使集合具有当前记录管理、自定义排序、筛选和分组功能。 |
ICollectionViewFactory | 可以实现集合以创建其数据的视图的接口。 正常情况下,用户代码不在此接口上调用方法。 |
ICollectionViewLiveShaping | 定义能够使 CollectionView 排序,分组和筛选的属性。 |
IComNativeDescriptorHandler | 提供 COM 对象和 TypeDescriptor 之间的顶级映射层。 |
IComponent | 提供全部组件所需的功能。 |
IContainer | 提供容器的功能。 容器是在逻辑上包含零个或多个组件的对象。 |
ICustomTypeDescriptor | 提供为对象提供动态自定义类型信息的接口。 |
IDataErrorInfo | 提供功能,该功能提供用户界面可以绑定的自定义错误信息。 |
IEditableCollectionView | 定义 CollectionView 所实现的方法和属性,用于向集合提供编辑功能。 |
IEditableCollectionViewAddNewItem | 定义 CollectionView 所实现的方法和属性,它们可用于指定添加特定类型的项。 |
IEditableObject | 提供提交或回滚对用作数据源的对象所做更改的功能。 |
IExtenderProvider | 定义将属性扩展到容器中的其他组件的接口。 |
IIntellisenseBuilder | 提供便于检索生成器的名称并显示该生成器的界面。 |
IItemProperties | 定义一个提供对象属性相关信息的属性。 |
IListSource | 向对象提供返回可以绑定到数据源列表的功能。 |
INestedContainer | 提供嵌套容器的功能,嵌套容器逻辑上可包含零个或多个其他组件,且这类容器由父组件拥有。 |
INestedSite | 提供检索组件的完全嵌套名称的能力。 |
INotifyDataErrorInfo | 定义数据实体类可实现以提供自定义同步和异步验证支持的成员。 |
INotifyPropertyChanged | 通知客户端属性值已更改。 |
INotifyPropertyChanging | 通知客户端属性值正在更改。 |
IRaiseItemChangedEvents | 指示类是否将属性更改事件转换为 ListChanged 事件。 |
IRevertibleChangeTracking | 提供对回滚更改的支持 |
ISite | 提供站点所需的功能。 |
ISupportInitialize | 指定该对象支持对批初始化的简单的事务处理通知。 |
ISupportInitializeNotification | 允许协调组件及其依赖属性的初始化。 |
ISynchronizeInvoke | 提供同步或异步执行委托的方法。 |
ITypeDescriptorContext | 提供有关组件的上下文信息,如其容器和属性描述符。 |
ITypedList | 提供发现可绑定列表架构的功能,其中可用于绑定的属性不同于要绑定到的对象的公共属性。 |
7,Enums 枚举
BindableSupport | 指定值来表示是否可以将属性绑定到数据元素或另一个属性。 |
BindingDirection | 指定模板是否可以用一种方式或两种方式绑定。 |
CollectionChangeAction | 指定如何更改集合。 |
DataObjectMethodType | 根据应用于某方法的 DataObjectMethodAttribute 的指定,标识该方法所执行的数据操作类型。 |
DesignerSerializationVisibility | 指定属性对设计时序列化程序所具有的可见性。 |
EditorBrowsableState | 从编辑器内指定属性或方法的可浏览状态。 |
InheritanceLevel | 定义继承级别类型的标识符。 |
LicenseUsageMode | 指定何时可以使用 License。 |
ListChangedType | 指定列表的更改方式。 |
ListSortDirection | 指定排序操作的方向。 |
MaskedTextResultHint | 指定简洁描述掩码文本分析操作结果的值。 |
NewItemPlaceholderPosition | 指定新项的占位符在集合中的显示的位置。 |
PropertyFilterOptions | 指定哪些属性应由类型描述符报告,尤其是 GetProperties(Object) 方法。此枚举用于指定 Filter 属性的值。 |
PropertyTabScope | 定义指示“属性”窗口中选项卡的持续范围的标识符。 |
RefreshProperties | 定义指示“属性”窗口刷新类型的标识符。 |
ToolboxItemFilterType | 定义用于指示 ToolboxItemFilterAttribute 使用的筛选器类型的标识符。 |
8,Delegates 委托
AddingNewEventHandler | 表示用来处理 AddingNew 事件的方法。 |
AsyncCompletedEventHandler | 表示将处理异步操作的 MethodName |
CancelEventHandler | 表示处理可取消事件的方法。 |
CollectionChangeEventHandler | 表示处理将元素添加到集合中或从集合中移除元素时引发的 CollectionChanged 事件的方法。 |
CurrentChangingEventHandler | 表示 CurrentChanging 事件的处理方法。 |
DoWorkEventHandler | 表示用来处理 DoWork 事件的方法。 此类不能被继承。 |
HandledEventHandler | 表示可以处理事件的方法,这些事件在事件处理程序返回后可能需要或不需要进行进一步处理。 |
ListChangedEventHandler | 表示将处理 IBindingList 类的 ListChanged 事件的方法。 |
ProgressChangedEventHandler | 表示将处理 BackgroundWorker 类的 ProgressChanged 事件的方法。 此类不能被继承。 |
PropertyChangedEventHandler | 表示将处理 PropertyChanged 事件的方法,该事件在更改组件上的属性时引发。 |
PropertyChangingEventHandler | 表示将对 PropertyChanging 接口的 INotifyPropertyChanging 事件进行处理的方法。 |
RefreshEventHandler | |
RunWorkerCompletedEventHandler | 表示将处理 RunWorkerCompleted 类的 BackgroundWorker 事件的方法。 |
https://www.cnblogs.com/whuanle/p/10003259.html

