当前位置:首页 > 应用开发

如何使用C#中的用户注释?

【.com快译】数据注释(System.ComponentModel.DataAnnotations命名空间的何使一部分)是可以运用于类或类成员的属性,以指定类之间的用C用户关系、描述数据如何在UI中显示以及指定验证规则。中的注释本文讨论数据注释、何使为什么数据注释很有用以及如何在.NET Core应用程序中使用它们。用C用户

若要使用本文提供的中的注释代码示例,您应该在系统中安装Visual Studio 2019。何使如果还没有安装,用C用户可以在此处(https://visualstudio.microsoft.com/downloads/)下载Visual Studio 2019。中的注释

在Visual Studio 2019中创建控制台应用程序项目

首先,何使不妨在Visual Studio中创建一个.NET Core控制台应用程序项目。用C用户假设系统中已安装Visual Studio 2019,中的注释按照下面概述的何使步骤在Visual Studio中创建新的.NET Core控制台应用程序项目。

启动Visual Studio IDE。用C用户 点击“创建新项目”。中的注释 在“创建新项目”窗口中,从显示的模板列表中选择“控制台应用程序(.NET Core)”。 点击下一步。 在接下来显示的“配置新项目”窗口中,指定新项目的香港云服务器名称和位置。 点击创建。

这将在Visual Studio 2019中创建一个新的.NET Core控制台应用程序项目。我们在本文后面将使用该项目来处理数据注释。

添加System.ComponentModel.DataAnnotations命名空间

想使用本文给出的代码示例,应该将System.ComponentModel.DataAnnotations命名空间添加到您的程序。

注意,属性用于指定类或属性的元数据。数据注释属性大致分为以下几类:

验证属性——用于对实体的属性实施验证规则。 显示属性——用于指定数据在用户界面中应如何显示。 建模属性——用于指定类之间存在的关系。

C#中的数据注释属性类

System.ComponentModel.Annotations命名空间包含几个属性类,它们可用于为您的实体类或数据控件定义元数据。最常用的属性包括如下:

并发检查 键 最大长度 必需 字符串长度 时间戳

C#中的数据注释示例

在前面创建的控制台应用程序中的Author.cs文件中创建以下类。

public class Author  {   [Required(ErrorMessage = "{ 0} is required")]  [StringLength(50, MinimumLength = 3,  ErrorMessage = "First Name should be minimum 3 characters and a maximum of 50 characters")]  [DataType(DataType.Text)]  public string FirstName {  get; set; }  [Required(ErrorMessage = "{ 0} is required")]  [StringLength(50, MinimumLength = 3,  ErrorMessage = "Last Name should be minimum 3 characters and a maximum of 50 characters")]  [DataType(DataType.Text)]  public string LastName {  get; set; }  [DataType(DataType.PhoneNumber)]  [Phone]  public string PhoneNumber {  get; set; }  [DataType(DataType.EmailAddress)]  [EmailAddress]  public string Email {  get; set; }  } 

下列代码片段表明了您如何创建Author类的实例并为其属性赋予值。

Author author = new Author();  author.FirstName = "Joydip";  author.LastName = "";  author.PhoneNumber = "1234567890";  author.Email = "joydipkanjilal@yahoo.com"; 

您可以在Program.cs文件的Main方法中编写下列代码片段,以验证模型。

ValidationContext context = new ValidationContext(author, null, null);  List validationResults = new List();  bool valid = Validator.TryValidateObject(author, context, validationResults, true);  if (!valid)  {   foreach (ValidationResult validationResult in validationResults)  {   Console.WriteLine("{ 0}", validationResult.ErrorMessage);  }  } 

ValidationContext这个类为您提供了进行验证所在的上下文。站群服务器如果验证成功,Validator类的TryValidateObject静态方法返回true,否则返回false。它还返回ValidationResults列表,详细列出该模型未通过的所有验证。最后,我们使用foreach循环来迭代处理ValidationResults列表,在控制台窗口显示错误消息。

完整的代码片段如下所示,供您参考。

public class Author  {   [Required(ErrorMessage = "{ 0} is required")]  [StringLength(50, MinimumLength = 3,  ErrorMessage = "First Name should be minimum 3 characters and a maximum of 50 characters")]  [DataType(DataType.Text)]  public string FirstName {  get; set; }  [Required(ErrorMessage = "{ 0} is required")]  [StringLength(50, MinimumLength = 3,  ErrorMessage = "Last Name should be minimum 3 characters and a maximum of 50 characters")]  [DataType(DataType.Text)]  public string LastName {  get; set; }  [DataType(DataType.PhoneNumber)]  [Phone]  public string PhoneNumber {  get; set; }  [DataType(DataType.EmailAddress)]  [EmailAddress]  public string Email {  get; set; }  }  class Program  {   static void Main(string[] args)  {   Author author = new Author();  author.FirstName = "Joydip";  author.LastName = ""; //No value entered  author.PhoneNumber = "1234567890";  author.Email = "joydipkanjilal@yahoo.com";  ValidationContext context = new ValidationContext  (author, null, null); List validationResults = new  List();  bool valid = Validator.TryValidateObject  (author, context, validationResults, true);  if (!valid)  {   foreach (ValidationResult validationResult in  validationResults)  {   Console.WriteLine("{ 0}",  validationResult.ErrorMessage);  }  }  Console.ReadKey();  }  } 

执行程序后,应该会看到控制台窗口显示的下列错误消息:

LastName is required 

在C#中创建自定义验证属性

想创建自定义验证属性类,您应该扩展ValidationAttribute基础类,并覆盖IsValid方法,如下列代码片段所示。

[AttributeUsage(AttributeTargets.Property, AllowMultiple = false, Inherited = false)]  public class IsEmptyAttribute : ValidationAttribute  {   public override bool IsValid(object value)  {   var inputValue = value as string;  return !string.IsNullOrEmpty(inputValue);  }  } 

下列代码片段表明了你如何可以使用自定义属性来装饰Author类的FirstName和LastName属性。

[IsEmpty(ErrorMessage = "Should not be null or empty.")]  public string FirstName {  get; set; }  [IsEmpty(ErrorMessage = "Should not be null or empty.")]  public string LastName {  get; set; } 

数据注释最初作为System. ComponentModel. DataAnnotations命名空间的一部分而引入到.NET 3.5中。此后,它已成为.NET中一种广泛使用的功能。你可以充分利用数据注释在单单一处定义数据验证规则,因而没必要一再重写同样的验证代码。

原文标题:How to use data annotations in C#,作者:Joydip Kanjilal

【译稿,合作站点转载请注明原文译者和出处为.com】

分享到:

滇ICP备2023006006号-16