zoukankan      html  css  js  c++  java
  • C#指南,重温基础,展望远方!(12)C#特性

    C# 程序中的类型、成员和其他实体支持使用修饰符来控制其行为的某些方面。 例如,方法的可访问性是由 publicprotectedinternal 和 private 修饰符控制。 C# 整合了这种能力,以便可以将用户定义类型的声明性信息附加到程序实体,并在运行时检索此类信息。 程序通过定义和使用特性来指定此类额外的声明性信息。

    以下示例声明了 HelpAttribute 特性,可将其附加到程序实体,以提供指向关联文档的链接。

    C#
    using System;
    
    public class HelpAttribute: Attribute
    {
        string url;
        string topic;
        public HelpAttribute(string url) 
        {
            this.url = url;
        }
    
        public string Url => url;
    
        public string Topic {
            get { return topic; }
            set { topic = value; }
        }
    }
    

    所有特性类都派生自标准库提供的 Attribute 基类。 特性的应用方式为,在相关声明前的方括号内指定特性的名称以及任意自变量。 如果特性的名称以 Attribute 结尾,那么可以在引用特性时省略这部分名称。 例如,可按如下方法使用 HelpAttribute

    C#
    [Help("https://docs.microsoft.com/dotnet/csharp/tour-of-csharp/attributes")]
    public class Widget
    {
        [Help("https://docs.microsoft.com/dotnet/csharp/tour-of-csharp/attributes", 
        Topic = "Display")]
        public void Display(string text) {}
    }
    

    此示例将 HelpAttribute 附加到 Widget 类。 还向此类中的 Display 方法附加了另一个 HelpAttribute。 特性类的公共构造函数控制了将特性附加到程序实体时必须提供的信息。 可以通过引用特性类的公共读写属性(如上面示例对 Topic 属性的引用),提供其他信息。

    通过反射请求获得特定特性时,将调用特性类的构造函数(由程序源提供信息),并返回生成的特性实例。 如果是通过属性提供其他信息,那么在特性实例返回前,这些属性会设置为给定值。

  • 相关阅读:
    文章预告的自我挖坑系列——时尚与深度学习
    文章预告的自我挖坑系列——D3.js 系列之星光闪烁
    时尚与深度学习系列:Fashion forward: Forecasting visual style in fashion
    D3.JS V4 绘制中国地图
    mysql 数据库电脑间迁移
    (QA-LSTM)自然语言处理:智能问答 IBM 保险QA QA-LSTM 实现笔记.md
    博客园里输入latex公式
    理解pytorch中的softmax中的dim参数
    numpy中的广播
    美团餐饮娱乐知识图谱——美团大脑揭秘
  • 原文地址:https://www.cnblogs.com/lzfsuifeng/p/9109596.html
Copyright © 2011-2022 走看看