当前位置:首页 > C#编程 > C#/.net框架 > 正文内容

C# 特性 System.ComponentModel 命名空间属性方法大全,System.ComponentModel 命名空间的特性

Jorge2年前 (2022-05-09)C#/.net框架758

 

目录:

System.ComponentModel

特性命名空间与常用类

System.ComponentModel.DataAnnotations

ComponentModel - Classes 类

ComponentModel - Structs 结构体

ComponentModel - Interfaces 界面

ComponentModel - Enums 枚举

ComponentModel - Delegates 委托

内容更新中

 1,System.ComponentModel

System.ComponentModel 命名空间提供用于实现组件和控件的运行时和设计时行为的类。 此命名空间包括用于特性和类型转换器的实现、数据源绑定和组件授权的基类和接口。

C# 语法优美,特性注释是其中一项,其使用特点如下图。

image.png

笔者在学习 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 数据验证常用的特性。

AssociatedMetadataTypeTypeDescriptionProvider

通过添加在关联类中定义的特性和属性信息,从而扩展某个类的元数据信息。

AssociationAttribute

指定实体成员表示数据关系(如外键关系)。

BindableTypeAttribute

指定类型是否通常用于绑定。

CompareAttribute

提供用于比较两个属性的特性。

ConcurrencyCheckAttribute

指定属性参与乐观并发检查。

CreditCardAttribute

指定数据字段值是信用卡号。

CustomValidationAttribute

指定用于验证属性或类实例的自定义验证方法。

DataTypeAttribute

指定要与数据字段关联的其他类型的名称。

DisplayAttribute

提供允许为实体分部类的类型和成员指定可本地化字符串的通用特性。

DisplayColumnAttribute

指定作为外键列显示在被引用表中的列。

DisplayFormatAttribute

指定 ASP.NET 动态数据如何显示数据字段以及如何设置数据字段的格式。

EditableAttribute

指示数据字段是否可编辑。

EmailAddressAttribute

验证电子邮件地址。

EnumDataTypeAttribute

启用 .NET Framework 枚举,以映射到数据列。

FileExtensionsAttribute

验证文件扩展名。

FilterUIHintAttribute

表示用于指定列的筛选行为的特性。

KeyAttribute

表示唯一标识实体的一个或多个属性。

MaxLengthAttribute

指定属性中允许的数组或字符串数据的最大长度。

MetadataTypeAttribute

指定要与数据模型类关联的元数据类。

MinLengthAttribute

指定属性中允许的数组或字符串数据的最小长度。

PhoneAttribute

指定数据字段值是格式标准的电话号码。

RangeAttribute

为数据字段的值指定数值范围约束。

RegularExpressionAttribute

指定 ASP.NET 动态数据中的数据字段值必须与指定的正则表达式匹配。

RequiredAttribute

指定数据字段值是必需的。

ScaffoldColumnAttribute

指定类或数据列是否使用基架。

ScaffoldTableAttribute

指定类或数据表是否使用基架。

StringLengthAttribute

指定数据字段中允许的字符的最小长度和最大长度。

TimestampAttribute

列的数据类型指定为行版本。

UIHintAttribute

指定动态数据用来显示数据字段的模板或用户控件。

UrlAttribute

提供 URL 验证。

ValidationAttribute

充当所有验证特性的基类。

ValidationContext

描述执行验证检查的上下文。

ValidationException

表示在使用 ValidationAttribute 类的情况下验证数据字段时发生的异常。

ValidationResult

表示验证请求的结果的容器。

Validator

定义一个帮助器类,在与对象、属性和方法关联的 ValidationAttribute 特性中包含此类时,可使用此类来验证这些项。

使用示例(使用时忽略后面的 Attribute )

C#
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] 指定数据字段值是必需的,用户输入时不能为空。

他有多种使用形式,

属性

使用方法如下

C#
[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)

其方法大多数是继承基类的,使用方法如下

C#
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; }
    }}

相互转换的类型转换器。

RefreshEventArgs

为 Refreshed 事件提供数据。

RefreshPropertiesAttribute

指示关联的属性值更改时应刷新属性网格。 此类不能被继承。

RunInstallerAttribute

指定在安装程序集时是否应调用 Visual Studio 自定义操作安装程序或 Installutil.exe (安装程序工具)

RunWorkerCompletedEventArgs

为 MethodNameCompleted 事件提供数据。

SByteConverter

提供用于在 8 位无符号整数对象与字符串之间实现相互转换的类型转换器。

SettingsBindableAttribute

指定何时可将组件属性绑定到应用程序设置。

SingleConverter

提供将单精度浮点数字对象与各种其他表示形式相互转换的类型转换器。

SortDescriptionCollection

表示 SortDescription 对象的集合。

StringConverter

提供用于在字符串对象与其他表示形式之间实现相互转换的类型转换器。

SyntaxCheck

提供方法来验证计算机名称和路径是否符合特定语法。 此类不能被继承。

TimeSpanConverter

提供将 TimeSpan 对象与其他表示形式相互转换的类型转换器。

ToolboxItemAttribute

表示工具箱项的特性。

ToolboxItemFilterAttribute

为工具箱项指定要使用的筛选器字符串和筛选器类型。

TypeConverter

提供一种将值的类型转换为其他类型以及访问标准值和子属性的统一方法。

TypeConverter.SimplePropertyDescriptor

表示一个 abstract 类,该类为没有属性的对象提供属性。

TypeConverter.StandardValuesCollection

表示值的集合。

TypeConverterAttribute

指定对于此属性绑定到的对象要使用哪种类型作为转换器。

TypeDescriptionProvider

向 TypeDescriptor 提供补充元数据。

TypeDescriptionProviderAttribute

指定类的自定义类型说明提供程序。 此类不能被继承。

TypeDescriptor

提供有关组件特征的信息,如组件的特性、属性和事件。 此类不能被继承。

TypeListConverter

提供可用于在列表框中填充可用类型的类型转换器。

UInt16Converter

提供用于在 16 位无符号整数对象与其他表示形式之间实现相互转换的类型转换器。

UInt32Converter

提供用于在 32 位无符号整数对象与其他各种表示形式之间实现相互转换的类型转换器。

UInt64Converter

提供用于在 64 位无符号整数对象与其他表示形式之间实现相互转换的类型转换器。

WarningException

指定按警告(而不是错误)处理的异常。

Win32Exception

引发 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

表示将处理异步操作的 MethodNameCompleted 事件的方法。

CancelEventHandler

表示处理可取消事件的方法。

CollectionChangeEventHandler

表示处理将元素添加到集合中或从集合中移除元素时引发的 CollectionChanged 事件的方法。

CurrentChangingEventHandler

表示 CurrentChanging 事件的处理方法。

DoWorkEventHandler

表示用来处理 DoWork 事件的方法。 此类不能被继承。

HandledEventHandler

表示可以处理事件的方法,这些事件在事件处理程序返回后可能需要或不需要进行进一步处理。

ListChangedEventHandler

表示将处理 IBindingList 类的 ListChanged 事件的方法。

ProgressChangedEventHandler

表示将处理 BackgroundWorker 类的 ProgressChanged 事件的方法。 此类不能被继承。

PropertyChangedEventHandler

表示将处理 PropertyChanged 事件的方法,该事件在更改组件上的属性时引发。

PropertyChangingEventHandler

表示将对 PropertyChanging 接口的 INotifyPropertyChanging 事件进行处理的方法。

RefreshEventHandler

表示处理当 Refreshed 或组件在设计时被更改时引发的 Type 事件的方法。

RunWorkerCompletedEventHandler

表示将处理 RunWorkerCompleted 类的 BackgroundWorker 事件的方法。


 

引用自:

https://www.cnblogs.com/whuanle/p/10003259.html


扫描二维码推送至手机访问。

版权声明:本文由7点博客发布,如需转载请注明出处。

本文链接:http://6dot.cn/?id=111

标签: .NET.NET框架
分享给朋友:

“C# 特性 System.ComponentModel 命名空间属性方法大全,System.ComponentModel 命名空间的特性” 的相关文章

windows下c#程序提高实时性

windows下c#程序提高实时性

引言:我们手里的运控软件对实时性有了新要求。因为同设备上运行的其它视觉软件对cpu时间有变态的占用,压缩了运控软件的cpu占用时间。我们知道如果视觉软件卡一下,最多是处理时间长一点,但是运控软件卡一下,那就意味着撞机的问题,这个要严重得多。这个问题会持续把研究结果更新到本贴子。(一)提升线程和进程的...

C# 控件闪烁问题的解决

C# 控件闪烁问题的解决

说一下解决C#下控件闪烁的几个问题,如下:  listview和datagridview显示数据闪烁 自定义控件的显示闪烁listbox滚动条拖动闪烁面板中控件过多的闪烁propertyGrid点击和修改项目缓慢的问题richtextbox控件的刷新显示问题此类问题对于界面复杂规...

C#的propertygrid控件,选择和修改项目时很慢

C#的propertygrid控件,选择和修改项目时很慢

C#的propertygrid控件是很强。可以实现类似Vitual Studio属性面板那样的效果。但是。。。。我们一直痛苦它在选择和修改项目的时候很慢。我的用法是使用控件的SelectObject来绑定数据。C# PgridMotionSpeed.SelectedObject ...

C#测量程序运行时间及cpu使用时间

C#测量程序运行时间及cpu使用时间

对一个服务器程序想统计每秒可以处理多少数据包,要如何做?答案是用处理数据包的总数,除以累记处理数据包用的时间。这里要指出的是, 运行一段程序,使用的cpu时间,跟实际运行的时间是不一样的。附例如下:C#private void ShowRunTime() {...

计算代码执行时间,可以精确到十亿分之一秒

计算代码执行时间,可以精确到十亿分之一秒

注:.Net的Stopwatch类可以精确到1/10000毫秒, 有没有更精确的计时吗?见下面的代码。暂时没试过效果,大家可以试下。计算某个代码片段的执行时间,精确到CPU执行一条指令所用的时间(十亿分之一秒),可用于精确计算某个算法的执行时间。 代码:C#using Syste...

C# 当前不会命中断点 还没有为该文档加载任何符号

C# 当前不会命中断点 还没有为该文档加载任何符号

这个问题网上的经验大概如下:1。 清空方案,重新编译2。 删除项目bin目录下的东西,重新编译3。 解决相互引用的问题。4。 确保不是run的release5。把项目编译改为x866。 好像没发现其它的了。。。这些解决不了我们手上的项目的问题。我们的工程有几十个项目。我长话短说,解决方法是:引导项目...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。