【C#学习笔记】【Attribute】

C#制作ORM映射学习笔记一 自定义Attribute类 之前在做unity项目时发现只能用odbc连接数据库,感觉非常的麻烦,因为之前做web开发的时候用惯了ORM映射,所以我想在unity中也用一下ORM(虽然我知道出于性能的考虑这样做事不好的,不过自己的小项目吗管他的,自己爽就行了)。不过现在世面上的ORM映射基本都是为web项目设计的,与unity项目很难契合,所以我决定自己做一个简易的ORM映射。虽然想的很美但是实际做起来才发现还是挺复杂的,所 阅读详情

C#学习笔记系列

第一章 【C#学习笔记】【StackTrace】
第二章 【C#学习笔记】【Attribute】



前言

学习特性的使用,包括对.Net自带的三种预定义特性:Obsolete、Conditional、AttributeUsag的详细讲解,也列举了常用的特性,其中包括控件设计时要用到的一系列特性,最后介绍了如何进行自定义特性(仅以枚举作为示例)。


一、Attribute介绍

Attribute(特性)
MSDN给出定义:
Attribute类将预定义的系统信息或用户定义的自定义信息与目标元素相关联。
目标元素可以是程序集、类、构造函数、委托、枚举、事件、字段、接口、方法、可移植可执行文件模块、参数、属性(Property)、返回值、结构或其他特性(Attribute)。

二、Obsolete

Obsolete是.Net自带的三种预定义特性之一,该特性可以用来声明程序体是过时的,一个程序在不断迭代更新的过程中,总会出现要用新方法代替老方法的情况,但又不能删除老方法因为旧的项目在用,这是我们使用这个特性就能起到提示作用,Obsolete特性将程序结构标注为被弃用的。
在这里插入图片描述Obsolete有三个重载

public sealed class ObsoleteAttribute : Attribute
{
    //表示该程序体是被弃用的
    public ObsoleteAttribute();
    //string参数可以输入提示内容,在鼠标移动到程序体名称上显示,默认为“已过时”
    public ObsoleteAttribute(string? message);
    //bool参数用来表示该弃用方法是否编译报警,若为true,被使用时,会产生编译器错误,无法编译成功;若为false,则只是编译警告,告知方法是弃用的,但仍可编译成功并运行
    public ObsoleteAttribute(string? message, bool error);
}

三、Conditional

Conditional是.Net自带的三种预定义特性之一,位于System.Diagnostics命名空间下,这个特定通过条件判断决定是否运行下面对应的程序体
在这里插入图片描述

可以看到,定义了“Debug”字符串,方法Test1会运行,未定义“Release”字符串,Test2不会被运行。

四、AttributeUsage

AttributeUsag是.Net自带的三种预定义特性之一,仅对继承自Attribute的派生类有效,目的是控制当前类的使用范围。
如下面代码,定义了一个AttributeUsage的自定义特性,在AttributeUsage参数中传入了AttributeTargets.Method,指定当前特性仅对方法有效。

[AttributeUsage(AttributeTargets.Method)]
public sealed class FlowDemoAttribute : Attribute
{
    public FlowDemoAttribute() { }

    public string? Name { get; set; }

    public string? GetDisplayName()
    {
        return Name;
    }
}

那么在使用这个特性的时候,就只能定义在方法的上面,若放到其他的机构如字段,就会报错,如下图所示
在这里插入图片描述在这里插入图片描述如果需要指定对多个程序体有效的话,这里写多个目标,中间用 | 隔开,或者指定AttributeUsage.All,表示对所有程序体有效

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]

AttributeUsage有两个重载

public sealed class AttributeUsageAttribute: Attribute
{
    //AttributeTargets参数规定特性可被放置的语言元素。它是枚举器 AttributeTargets 的值的组合,默认为“AttributeUsage.All”
    public AttributeUsageAttribute(AttributeTargets validOn);
    //allowMultiple参数,如果为 true,则该特性是多用的。默认值是 false(单用的)
    //inherited参数,如果为 true,则该特性可被派生类继承。默认值是 false(不被继承)
    public AttributeUsageAttribute(AttributeTargets validOn, bool allowMultiple, bool inherited);
}

AttributeTargets是一个枚举,它包括以下内容:

namespace System
{
    //
    // 摘要:
    //     Specifies the application elements on which it is valid to apply an attribute.
    [Flags]
    public enum AttributeTargets
    {
        //
        // 摘要:
        //     Attribute can be applied to an assembly.
        Assembly = 1,
        //
        // 摘要:
        //     Attribute can be applied to a module. Module refers to a portable executable
        //     file (.dll or.exe) and not a Visual Basic standard module.
        Module = 2,
        //
        // 摘要:
        //     Attribute can be applied to a class.
        Class = 4,
        //
        // 摘要:
        //     Attribute can be applied to a structure; that is, a value type.
        Struct = 8,
        //
        // 摘要:
        //     Attribute can be applied to an enumeration.
        Enum = 16,
        //
        // 摘要:
        //     Attribute can be applied to a constructor.
        Constructor = 32,
        //
        // 摘要:
        //     Attribute can be applied to a method.
        Method = 64,
        //
        // 摘要:
        //     Attribute can be applied to a property.
        Property = 128,
        //
        // 摘要:
        //     Attribute can be applied to a field.
        Field = 256,
        //
        // 摘要:
        //     Attribute can be applied to an event.
        Event = 512,
        //
        // 摘要:
        //     Attribute can be applied to an interface.
        Interface = 1024,
        //
        // 摘要:
        //     Attribute can be applied to a parameter.
        Parameter = 2048,
        //
        // 摘要:
        //     Attribute can be applied to a delegate.
        Delegate = 4096,
        //
        // 摘要:
        //     Attribute can be applied to a return value.
        ReturnValue = 8192,
        //
        // 摘要:
        //     Attribute can be applied to a generic parameter. Currently, this attribute can
        //     be applied only in C#, Microsoft intermediate language (MSIL), and emitted code.
        GenericParameter = 16384,
        //
        // 摘要:
        //     Attribute can be applied to any application element.
        All = 32767
    }

五、常用的特性

在.Net系统库中有很多定义好的特性,接下来挑部分常用的特性做简单介绍

FlagsAttribute
作用域:Enum
说明:指示可以将枚举作为位域(一组标志)处理,即两个枚举可以进行与(&)或(|)运算(二进制形式),通过HasFlag()判断是否包含。
详细说明:
使用[Flags]的场景:枚举的类型是不唯一的,比如颜色,一张图片可能同时包含枚举中的几种颜色,通过EColorValue.HasFlag(EColor.yellow);判断是否包含,或者通过"|“”&"来作计算;
不使用[Flags]的场景:枚举的类型是唯一的,比如用户权限,要么是操作员,要么是管理员。

SerializableAttribute
作用域:Class,Struct,Rnum,Delegate
说明:指示一个类可以序列化。

ComVisibleAttribute
作用域:Assembly,Class,Struct,Enum,Method,Propery,Field,Interface,Delegate
说明:控制程序集中个别托管类型、成员或所有类型对COM的可访问性。

DisplayAttribute
作用域:Method,Property,Field,Parameter
说明:提供一个通用特性,使您可以为实体分部类的类型和成员指定可本地化的字符串。

控件设计中会用到的特性:

BrowsableAttribute
作用域:All
说明:指定一个属性或事件是否应显示在“属性”窗口中。
CategoryAttribute
作用域:All
说明:指定当属性或事件显示在一个设置为“按分类顺序”模式的System.Windows.Forms.PropertyGrid控件中,用于给属性或事件分组的类别的名称。
DescriptionAttribute
作用域:All
说明:指定属性或事件的说明。
BindableAttribute
作用域:All
说明:指定成员是否通常用于绑定。无法继承此类。
DefaultPropertyAttribute
作用域:Class
说明:指定组件的默认属性。
DefaultValueAttribute
作用域:All
说明:指定属性的默认值。
EditorAttribute
作用域:All
说明:指定用来更改属性的编辑器,无法继承此类。
LocalizableAttribute
作用域:All
说明:指定属性是否应本地化,无法继承此类。
DesignerSerializationVisibilityAttribute
作用域:Method,Property,Field,Event
说明:指定在设计时序列化组件上的属性时所使用的持久性类型。
TypeConverterAttribute
作用域:All
说明:指定用作此特性所绑定到的对象的转换器的类型,无法继承此类。
DefaultEventAttribute
作用域:Class
说明:指定组件的默认事件。

六、自定义特性

.Net 框架允许创建自定义特性,用于存储声明性的信息,且可在运行时被检索。该信息根据设计标准和应用程序需要,可与任何目标元素相关。

创建并使用自定义特性包含四个步骤:

  1. 声明自定义特性
  2. 构建自定义特性
  3. 在目标程序元素上应用自定义特性
  4. 通过反射访问特性

6.1. 声明自定义特性

一个新的自定义特性应派生自 System.Attribute 类,我们声明一个名为FlowCtrlAttribute的自定义特性:

[AttributeUsage(AttributeTargets.Field)]
public sealed class FlowCtrlAttribute : Attribute
{
    //TODO..
}

6.2. 构建自定义特性

让我们构建一个名为 FlowCtrlAttribute 的自定义特性,该特性将存储流程图中控件的类型名称、宽高大小信息。它存储下面的信息:

  • 流程图控件类型名称
  • 流程图控件默认宽度大小
  • 流程图控件默认高度大小

下面的代码演示了 FlowCtrlAttribute 类:

[AttributeUsage(AttributeTargets.Field)]
public sealed class FlowCtrlAttribute : Attribute
{
    /// <summary>
    /// 流程图控件类型名称
    /// </summary>
    public string? TypeName { get; set; }
    /// <summary>
    /// 流程图控件默认宽度大小
    /// </summary>
    public double Width { get; set; }
    /// <summary>
    /// 流程图控件默认高度大小
    /// </summary>
    public double Height { get; set; }

    public FlowCtrlAttribute() { }
    public FlowCtrlAttribute(string typeName, double width, double height)
    {
        this.TypeName = typeName;
        this.Width = width;
        this.Height = height;
    }

    public string? GetTypeName()
    {
        return TypeName;
    }
    public double GetWidth()
    {
        return Width;
    }
    public double GetHeight()
    {
        return Height;
    }
}

6.3. 在目标程序元素上应用自定义特性

通过把特性放置在紧接着它的目标之前,来应用该特性,我们这里应用于枚举的场景:

public enum EFlowControl
{
    [FlowCtrl(TypeName = "开始", Width = 80, Height = 30)]
    StartControl,
    [FlowCtrl(TypeName = "结束", Width = 80, Height = 30)]
    FinishControl,
    [FlowCtrl(TypeName = "行为", Width = 80, Height = 30)]
    ActionControl,
    [FlowCtrl(TypeName = "条件", Width = 80, Height = 60)]
    ConditionControl,
    [FlowCtrl(TypeName = "文件", Width = 80, Height = 40)]
    FileControl,
    [FlowCtrl(TypeName = "模块", Width = 80, Height = 40)]
    ModuleControl,
    [FlowCtrl(TypeName = "预设模块", Width = 100, Height = 40)]
    DefineModuleControl,
}

6.4. 通过反射访问特性

反射指程序可以访问、检测和修改它本身状态或行为的一种能力。

程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。

您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。

优缺点
优点:

  • 反射提高了程序的灵活性和扩展性。
  • 降低耦合性,提高自适应能力。
  • 它允许程序创建和控制任何类的对象,无需提前硬编码目标类。

缺点:

  • 性能问题:使用反射基本上是一种解释操作,用于字段和方法接入时要远慢于直接代码。因此反射机制主要应用在对灵活性和拓展性要求很高的系统框架上,普通程序不建议使用。
  • 使用反射会模糊程序内部逻辑;程序员希望在源代码中看到程序的逻辑,反射却绕过了源代码的技术,因而会带来维护的问题,反射代码比相应的直接代码更复杂。

反射(Reflection)的用途
反射(Reflection)有下列用途:

  • 它允许在运行时查看特性(attribute)信息。
  • 它允许审查集合中的各种类型,以及实例化这些类型。
  • 它允许延迟绑定的方法和属性(property)。
  • 它允许在运行时创建新类型,然后使用这些类型执行一些任务。

通过反射获取枚举的特性中存储的数据:

public static class EumHelper
{
    /// <summary>
    /// 获得枚举的TypeName
    /// </summary>
    /// <param name="eum">枚举</param>
    /// <returns>TypeName</returns>
    public static string GetTypeName<T>(this Enum eum)
    {
        Type type = eum.GetType();//先获取这个枚举的类型
        FieldInfo? field = type.GetField(eum.ToString());//通过这个类型获取到值
        FlowCtrlAttribute? obj = (FlowCtrlAttribute?)field?.GetCustomAttribute(typeof(FlowCtrlAttribute));//得到特性
        return obj?.GetTypeName() ?? string.Empty;
    }

    /// <summary>
    /// 获得枚举的Width
    /// </summary>
    /// <param name="eum">枚举</param>
    /// <returns>Width</returns>
    public static double GetWidth(this Enum eum)
    {
        Type type = eum.GetType();//先获取这个枚举的类型
        FieldInfo? field = type.GetField(eum.ToString());//通过这个类型获取到值
        FlowCtrlAttribute? obj = (FlowCtrlAttribute?)field?.GetCustomAttribute(typeof(FlowCtrlAttribute));//得到特性
        return obj?.GetWidth() ?? double.NaN;
    }

    /// <summary>
    /// 获得枚举的Height
    /// </summary>
    /// <param name="eum">枚举</param>
    /// <returns>Height</returns>
    public static double GetHeight(this Enum eum)
    {
        Type type = eum.GetType();//先获取这个枚举的类型
        FieldInfo? field = type.GetField(eum.ToString());//通过这个类型获取到值
        FlowCtrlAttribute? obj = (FlowCtrlAttribute?)field?.GetCustomAttribute(typeof(FlowCtrlAttribute));//得到特性
        return obj?.GetHeight() ?? double.NaN;
    }
}

总结

不积硅步,何以致千里

沧小海深入剖析xilinx的GTP/GTX核,掌握高速串行收发机制——第六章 接收端结构及功能说明 总目录在这哦~ https://blog.youkuaiyun.com/z123canghai/article/details/107700878 第六章 接收端结构及功能说明 子目录 6.1 RX的模拟前端 6.2 RX的OOB信号 6.3 RX的均衡器 6.4 RX的CDR 时钟数据恢复 6.5 RX时钟输出结构 6.6 RX 的极性控制 6.7 RX 的PRBS 6.8 Rx字节、字的对齐功能 6.9 Rx接收弹性缓冲区 6.10 Rx的时钟纠正 6.11 Rx接收通道绑定 6... 阅读详情

相关推荐

八大核心深度学习算法详解:从CNN到Transformer的完整指南

深度学习作为人工智能的核心技术,通过多层神经网络模拟人脑学习机制。其基本原理是利用反向传播算法优化网络参数,从数据中自动提取特征表示。这一技术价值在于能够处理高维复杂数据,在图像识别、自然语言处理等领域实现突破性进展。卷积神经网络(CNN)通过局部连接和权值共享有效处理图像数据,而Transformer架构基于自注意力机制革新了序列建模方式。在实际工程实践中,CNN广泛应用于计算机视觉任务,如图像分类和目标检测;Transformer则成为自然语言处理的主流架构,支撑着BERT、GPT等预训练模型。本文系统

aoe41606的博客 431

.net----特性

Conditional特性通过测试条件编译符号来确定适用的条件采用一个或多个Conditional特性修饰条件特性类条件方法标记为条件方法的调用取决于是否定义了预处理符号("DEBUG")("DEBUG")("TRACE")通过直接或间接地从System.Attribute类派生创建特性类的声明遵循下列规则:派生类的类名一般采用XXXAttribute的命名规范,类名就是特性名构造函数的参数是自定义特性的定位参数。

醉卧考场君莫笑 699

从封装到先进封装:一文讲透Chiplet、2.5D/3D堆叠与系统集成

封装是芯片产业链中连接硅片与电路板的桥梁,承担物理保护、电气连接、散热与机械支撑等核心任务。传统封装从DIP、QFP发展到BGA,通过提升引脚密度满足早期性能需求。随着摩尔定律放缓,单纯缩小晶体管尺寸难以为继,先进封装应运而生,其核心理念从“封装单颗芯片”转向“系统级高密度集成”。扇出型封装、2.5D硅中介层、3D堆叠、Chiplet和系统级封装等技术,通过微米级互连和垂直堆叠,大幅提升I/O密度与带宽,成为AI芯片、HBM存储、高性能计算等领域的关键支撑。本文梳理先进封装的技术演进、分层架构与工程难点,帮

weixin_29185167的博客 366

C# —— 特性

conditional:将一些函数隔离出来,相比来说特性歌里策略要比 #define不容易出错。[Conditional("URL")] // 当定义了URl执行f1方法。

一个新人博客,愿多多支持。 703

windows中如何将已安装的nodejs高版本降级为低版本

第一步:先清空本地安装的node.js版本 1.按健win+R弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑左面最左下角的win窗口图标弹出,输入cmd再点击回车键) 然后进入命令控制行窗口,并输入where node查看之前本地安装的node的路径 2.找到上面找到的路径,将node.exe所在的父目录里面的所有东西都删除 3.为了彻底删除之前安装的node.js,鼠标点击电脑左面最左下角的win窗口图标弹出,输入“控制面板”再点击回车键进入,进入控制面板后,找到所安装的node.js并

weixin_44582077的博客 9万+

RK3588 Android12 添加HDMI和喇叭声音通道切换选项

rk3588 android12系统默认接hdmi out时,声音会切换到hdmi out输出,主板声卡喇叭输出会没有声音输出。现在添加一个选项设置hdmi out时,声音可以保持主板声卡喇叭输出。

Android系统开发笔记 4162

ASP.NET 中 ObsoleteAttribute 属性的使用

 一、Obsolete属性使用方法 1、Obsolete attribute位于System命名空间,它是一个attribute类型,以Obsolete或者ObsoleteAttribute来指定,在编译时,会自动添加上 “Attribute” 后缀。 2、指定一个attribute,用方括号[]围起所期望的attribute,置于所要修饰的方法、接口、属性、委托、事件等

whaxrl的专栏 1181

gurobi最新下载安装教程 2023.11

我下载的最新版gurobi支持python3.7-python3.11,这个序号与计算机硬件捆绑,一旦激活就会失效。运行激活码之后,产生的。如果既放置在了上面的默认搜索目录,又设置了。系统环境变量(不是用户环境变量),指向保存的目录和文件名(例如。高版本产生的许可文件兼容低版本。验证不会成功,学术许可不会激活。之后cmd进入命令行,cd进入gurobi所在的。,实测不到一小时即可审核完毕,获得对应的许可。如果学校的网关没有将本校的。系统环境变量指向不同的目录和文件,原厂无关,是学校网络的设置问题。

Cachel Wood的博客 2万+

反射和特性

标志的定义 1、标识符(类名、方法名等)是程序员写给自己或其他程序员看的 2、程序无法通过标识符知道其自身的含义 3、但是我们可以使用标志来标记标识符的含义,程序可以读取标志从而得知一个标识符的含义 4、标志就像一本字典给每个字做的注解 class ABC { public ABC(string s) { } } [ABC("这是标志")] ==> new ABC("这是标志") 反射的定义 反射:在程序运行时可以指导一个类有哪些成员,每个成员方法上有哪些标志、几个参数、每个参数的

ht_game的博客 197

基于OpenClaw的自动化文件管理与文档分类系统设计与实现

本文介绍了一种基于OpenClaw的自动化文件管理与文档分类系统。系统采用三层架构设计,包含数据层、逻辑层和应用层,核心组件涵盖文件扫描、处理、分类、移动等功能。技术选型上使用Python/FastAPI作为后端,结合PostgreSQL/Elasticsearch/MinIO存储方案,并整合scikit-learn/PyTorch等AI技术实现智能分类。系统实现了文件递归扫描、增量扫描、元数据提取等功能,通过文件哈希和修改时间检测变化。该方案能有效提升文件管理效率,实现文档的自动化分类与智能管理。

一键难忘的博客 753

YOLOv11 环境配置全流程 | 从零开始搭建训练与推理环境

YOLOv11环境配置与训练全流程指南 本文详细介绍了YOLOv11目标检测模型的环境配置、训练与推理全流程。内容包括: 环境要求:列出GPU、CUDA、Python等组件的版本要求,提供快速检查脚本 Windows配置: CUDA 12.6和cuDNN 8.9.7安装步骤 使用Conda创建隔离环境 PyTorch GPU版本安装方法 IDE环境配置 Linux配置:提供Ubuntu 22.04下的CUDA、cuDNN安装命令和Conda环境搭建 Docker方案:提供一键式容器化部署命令 训练实战: 数

shrgegrb的博客 2015

.NET ObsoleteAttribute

对于有不同版本的程序代码,obsoleteattribute显得大有用武之地。如果开发了一个新的方法,并且可以确定不再希望使用某方法,那么就可以使用Obsoleteattribute来修饰该方法,编译代码后,按警告/错误提示信息逐一更正原来的代码。在一个大型工程中,有助于协调不同的程序员所采用的方法。 using System; using System.Collections.Generic;

tomcat的专栏 801

读懂 403 Forbidden, the request has been blocked by UCON.:它不是浏览器渲染问题,而是后端安全闸门在拦截

摘要 403 Forbidden 错误表明服务器理解请求但拒绝执行,通常与权限或访问控制有关。当错误信息显示 "blocked by UCON" 时,说明请求被 SAP 体系中的统一连接管控框架拦截。UCON 采用白名单机制限制外部调用,通过记录、评估、强制三阶段流程实施管控。常见触发场景包括 HTTP 服务与通信场景配置不一致、白名单未更新等。排查时应通过 DevTools 确认服务器响应,使用 curl 排除浏览器干扰,并比较不同环境的行为差异。解决方案通常涉及调整配置传输顺序或更新

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 239

C# 中的 Attribute 学习笔记

Attribute的实例化 1. 不使用new操作符来产生实例,而是使用在方括号里调用构造函数的来产生实例。 2. 方括号必需紧挨着放置在被附着目标的前面。 3. 因为方括号里空间有限,不能像使用new那样先构造对象后再对对象的属性(Property)一一赋值。因此,对Attribute实例的属性的赋值也都挤在了构造函数的圆括号里 值得注意的是: 1. 构造函数的参数是一定要写...

dibiemian0810的博客 135

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

C#学习笔记 Attribute(特性)

简单地说,特性(Attribute)是与类、结构、方法等元素相关的额外信息,是对元信息的扩展。通过Attribute可以使程序、甚至语言本身的功能得到增强。 Attribute是C#中一种特有的语法成分,它可以作用于各种语言要素,如命名空间、类、方法、字段、属性、索引器,等等,都可以附加上一些特定的声明信息。Attribute与元数据一起存储于程序集中,编译器或者其他程序可以读取并利用这些信息。 ...

不导翁的博客 869

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C#学习笔记--Attribute

直接或间接继承自System.Attribute的类是Attribute,按照约定,属性的名字应该带一个Attribute的后缀,当然不带也不会引起编译时的错误,只不过需要注意的是以下内容 usingSystem;[AttributeUsage(AttributeTargets.All)]publicclassXAttribute:Attribute{}[X]...

weixin_30596735的博客 126

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

C# 学习笔记(Attribute) - 07

AttributeIts not static fixed by the language it self, and youre free to invent an asscoiate any information of any kind.An attribute is actually a class derived from the System.Attribute.It

Make Good Stuff Happen~! 992

学习笔记--C#特性Attribute(一)

这个框框好烦人啊,删不掉 一、背景 [serializable] public class Person(){} 这是我第一次看到特性(Attribute),那时我还不知道这是什么,怎么会有这种写法,让我纠结了很久,我只知道,加了这个后,这个类就可以序列化了。 二、使用 ①定义自己的Attribute //自定义特性,跟普通的类差不多,继承Attr...

LYPPPP0000的博客 230

C#学习笔记 -- Attribute

学习参考: http://www.cnblogs.com/dudu/articles/4449.html http://www.cnblogs.com/anytao/archive/2007/04/19/must_net_03.html 今天在讨论IPC通信契约的时候,卢工提到使用Attribute来描述具体的接口方法的命令信息。发现对 Attribute的概念还不是很熟悉,因此对其...

weixin_30628077的博客 120

C#学习笔记(十六):Attribute

Attribute可以为类或方法添加一些附加的信息,我们可以看看MSDN对Attribute的描述: 公共语言运行时允许你添加类似关键字的描述声明,叫做attributes, 它对程序中的元素进行标注,如类型、字段、方法和属性等。Attributes和Microsoft .NET Framework文件的元数据保存在一起,可以用来向运行时描述你的代码,或者在程序运行的时候影响应用程序的行为。...

weixin_30810239的博客 83

转:C#制作ORM映射学习笔记一 自定义Attribute类

之前在做unity项目时发现只能用odbc连接数据库,感觉非常的麻烦,因为之前做web开发的时候用惯了ORM映射,所以我想在unity中也用一下ORM(虽然我知道出于性能的考虑这样做事不好的,不过自己的小项目吗管他的,自己爽就行了)。不过现在世面上的ORM映射基本都是为web项目设计的,与unity项目很难契合,所以我决定自己做一个简易的ORM映射。虽然想的很美但是实际做起来才发现还是挺复杂的,所...

cillent_boy的专栏 479

C#学习笔记之四(Attribute, Reflection, Thread, Thread Synchronization)

Atributes: //can add metadata in program, It store with the program //using ILDasm to check atributes   //usage [CodeReviewAttribute("08/08/2005", "Allan Zhang",  Comment = "That is a Attribute test")

1334

【C#笔记自用1】

ContextMenu] 和 [ContextMenuItem]:在Inspector面板的ContextMenu中添加自定义选项,允许开发者通过右键菜单快速执行某些操作或调用方法。[Header]:在Inspector面板中为字段组添加标题,有助于组织和管理大量字段。[Space]:在Inspector面板中的字段之间添加额外的间距,提高可读性。

weixin_45478456的博客 2038

C#学习笔记之四(Attribute, Reflection, Thread, Thread Syn

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 708
上一篇: WPF下实现控件的拖拽功能
下一篇: 【C#学习笔记】【Interface】
Aflashstar
博客等级 码龄12年 205粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值