您现在的位置是:亿华云 > 人工智能

聊一聊C#创建自定义特性

亿华云2025-10-03 06:21:07【人工智能】9人已围观

简介本文转载自微信公众号「后端Q」,作者conan。转载本文请联系后端Q公众号。概述特性(Attribute)是用于在运行时传递程序中各种元素(比如类、方法、结构、枚举、组件等)的行为信息的声明性标签。您

本文转载自微信公众号「后端Q」,聊聊作者conan。建自转载本文请联系后端Q公众号。定义

概述

特性(Attribute)是特性用于在运行时传递程序中各种元素(比如类、方法、聊聊结构、建自枚举、定义组件等)的特性行为信息的声明性标签。您可以通过使用特性向程序添加声明性信息。聊聊一个声明性标签是建自通过放置在它所应用的元素前面的网站模板方括号([ ])来描述的。要设计你自己的定义自定义特性,无需掌握许多新的特性概念。 如果你熟悉面向对象的聊聊编程,并且知道如何设计类,建自那么你已经具备大部分所需知识。定义 自定义特性本质上是直接或间接派生自 System.Attribute的传统类。 与传统类一样,服务器租用自定义特性包含用于存储和检索数据的方法。

实现方式

1、声明自定义特性,一个新的自定义特性应派生自 System.Attribute 类。

// 一个自定义特性 BugFix 被赋给类及其成员 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute 

2、构建自定义特性,让我们构建一个名为 DeBugInfo 的自定义特性,该特性将存储调试程序获得的信息。

// 一个自定义特性 BugFix 被赋给类及其成员 [AttributeUsage(AttributeTargets.Class | AttributeTargets.Constructor | AttributeTargets.Field | AttributeTargets.Method | AttributeTargets.Property, AllowMultiple = true)] public class DeBugInfo : System.Attribute {    private int bugNo;   private string developer;   private string lastReview;   public string message;   public DeBugInfo(int bg, string dev, string d) {        this.bugNo = bg;       this.developer = dev;       this.lastReview = d;   }   public int BugNo   {        get       {            return bugNo;       }   }   public string Developer   {        get       {            return developer;       }   }   public string LastReview   {        get       {            return lastReview;       }   }   public string Message   {        get       {            return message;       }       set       {            message = value;       }   } } 

3、应用自定义特性

[DeBugInfo(45, "Zara Ali", "12/8/2012", Message = "Return type mismatch")] [DeBugInfo(49, "Nuha Ali", "10/10/2012", Message = "Unused variable")] class Rectangle {    // 成员变量   protected double length;   protected double width;   public Rectangle(double l, double w)   {        length = l;       width = w;   }   [DeBugInfo(55, "Zara Ali", "19/10/2012",   Message = "Return type mismatch")]   public double GetArea()   {        return length * width;   }   [DeBugInfo(56, "Zara Ali", "19/10/2012")]   public void Display()   {        Console.WriteLine("Length: { 0}", length);       Console.WriteLine("Width: { 0}", width);       Console.WriteLine("Area: { 0}", GetArea());   } } 云服务器提供商

很赞哦!(2)