当前位置: 首页 > 科技观察

如何在C#中使用用户注解?

时间:2023-03-14 18:19:07 科技观察

【.com速译】数据注解(System.ComponentModel.DataAnnotations命名空间的一部分)是可以应用于类或类成员的属性,用于指定类之间的关系,描述数据在UI中的显示方式,并指定验证规则。本文讨论数据注释、它们为何有用以及如何在.NETCore应用程序中使用它们。要使用本文中提供的代码示例,您应该在系统上安装VisualStudio2019。如果你还没有安装它,你可以在这里下载VisualStudio2019(https://visualstudio.microsoft.com/downloads/)。在VisualStudio2019中创建控制台应用程序项目首先,让我们在VisualStudio中创建一个.NETCore控制台应用程序项目。假设您的系统上安装了VisualStudio2019,请按照下面概述的步骤在VisualStudio中创建一个新的.NETCore控制台应用程序项目。启动VisualStudioIDE。单击“创建新项目”。在CreateNewProject窗口中,从显示的模板列表中选择ConsoleApplication(.NETCore)。点击下一步。在接下来出现的ConfigureNewProject窗口中,为新项目指定名称和位置。单击创建。这将在VisualStudio2019中创建一个新的.NETCore控制台应用程序项目。我们将在本文后面使用该项目来处理数据注释。添加System.ComponentModel.DataAnnotations命名空间要使用本文中给出的代码示例,您应该将System.ComponentModel.DataAnnotations命名空间添加到您的程序中。请注意,属性用于指定有关类或属性的元数据。数据注释属性大致分为以下类别:验证属性-用于对实体的属性实施验证规则。显示属性-用于指定数据在用户界面中的显示方式。建模属性-用于指定类之间存在的关系。C#中的数据注释属性类System.ComponentModel.Annotations命名空间包含几个属性类,可用于定义实体类或数据控件的元数据。最常用的属性包括以下内容:并发检查键所需的最大长度字符串长度时间戳数据注释C#示例在之前创建的控制台应用程序的Author.cs文件中创建以下类。publicclassAuthor{[Required(ErrorMessage="{0}isrequired")][StringLength(50,MinimumLength=3,ErrorMessage="FirstNameshouldbeminimum3charactersandamaximumof50characters")][DataType(DataType.Text)]publicstringFirstName{get;set;}[Required(ErrorMessage="{0}isrequired")][StringLength(50,MinimumLength=3,ErrorMessage="LastNameshouldbeminimum3charactersandamaximumof50characters")][DataType(DataType.Text)]publicstringLastName{get;set;}[DataType(数据类型.PhoneNumber)][Phone]publicstringPhoneNumber{get;set;}[DataType(DataType.EmailAddress)][EmailAddress]publicstringEmail{get;set;}}以下代码片段展示了如何创建Author类的实例并分配值到它的属性。Authorauthor=newAuthor();author.FirstName="Joydip";author.LastName="";author.PhoneNumber="1234567890";author.Email="joydipkanjilal@yahoo.com";验证模型的方法。ValidationContextcontext=newValidationContext(author,null,null);ListvalidationResults=newList();boolvalid=Validator.TryValidateObject(author,context,validationResults,true);if(!valid){foreach(ValidationResultvalidationResultinvalidationResults){Console.WriteLine("{0}",validationResult.ErrorMessage);}}ValidationContext此类为您提供进行验证的上下文。如果验证成功,则Validator类的TryValidateObject静态方法返回true,否则返回false。它还返回一个ValidationResults列表,详细说明模型失败的任何验证。最后,我们使用foreach循环遍历ValidationResults列表,在控制台窗口中显示错误消息。完整的代码片段如下所示,供您参考。publicclassAuthor{[Required(ErrorMessage="{0}isrequired")][StringLength(50,MinimumLength=3,ErrorMessage="FirstNameshouldbeminimum3charactersandamaximumof50characters")][DataType(DataType.Text)]publicstringFirstName{get;set;}[Required(ErrorMessage="{0}isrequired")][StringLength(50,MinimumLength=3,ErrorMessage="LastNameshouldbeminimum3charactersandamaximumof50characters")][DataType(DataType.Text)]publicstringLastName{get;set;}[DataType(DataType.PhoneNumber)][Phone]publicstringPhoneNumber{get;set;}[DataType(DataType.EmailAddress)][EmailAddress]publicstringEmail{get;set;}}classProgram{staticvoidMain(string[]args){Authorauthor=newAuthor();author.FirstName="Joydip";author.LastName="";//Novalueenteredauthor.PhoneNumber="1234567890";author.Email="joydipkanjilal@yahoo.com";ValidationContextcontext=newValidationContext(author,null,null);ListvalidationResults=newList();boolvalid=Validator.TryValidateObject(author,context,validationResults,true);if(!valid){foreach(ValidationResultvalidationResultinvalidationResults){Console.WriteLine("{0}",validationResult.ErrorMessage);}}Console.ReadKey();}}执行该程序后,您应该会在控制台窗口中看到以下错误消息:如以下代码片段所示[AttributeUsage(AttributeTargets.Property,AllowMultiple=false,Inherited=false)]publicclassIsEmptyAttribute:ValidationAttribute{publicoverrideboolIsValid(objectvalue){variinputValue=valueasstring;return!string.IsNullOrEmpty(inputValue);}}下面的代码如何使用自定义属性来修饰Author类的FirstName和LastName属性。[IsEmpty(ErrorMessage="Shouldnotbenullorempty.")]publicstringFirstName{get;set;}[IsEmpty(ErrorMessage="Shouldnotbenullorempty.")]publicstringLastName{get;set;}数据注释最初是作为System.ComponentModel.DataAnnotations的一部分创建的命名空间在.NET3.5中引入。它已成为.NET中广泛使用的功能。您可以充分利用数据注释在一个地方定义数据验证规则,因此无需一遍又一遍地重写相同的验证代码。原标题:HowtousedataannotationsinC#,作者:JoydipKanjilal