理解AttributeUsage类

article/2025/9/30 4:28:03

类定义:

    // 摘要: //     指定另一特性类的用法。 此类不能被继承。
    [Serializable][AttributeUsage(AttributeTargets.Class, Inherited = true)][ComVisible(true)]public sealed class AttributeUsageAttribute : Attribute{// 摘要: //     用指定的 System.AttributeTargets、System.AttributeUsageAttribute.AllowMultiple//     值和 System.AttributeUsageAttribute.Inherited 值列表初始化 System.AttributeUsageAttribute//     类的新实例。//// 参数: //   validOn://     使用按位"或"运算符组合的一组值,用于指示哪些程序元素是有效的。public AttributeUsageAttribute(AttributeTargets validOn);// 摘要: //     获取或设置一个布尔值,该值指示能否为一个程序元素指定多个指示属性实例。//// 返回结果: //     如果允许指定多个实例,则为 true;否则为 false。 默认值为 false。public bool AllowMultiple { get; set; }//// 摘要: //     获取或设置一个布尔值,该值指示指示的属性能否由派生类和重写成员继承。//// 返回结果: //     如果该属性可由派生类和重写成员继承,则为 true,否则为 false。 默认值为 true。public bool Inherited { get; set; }//// 摘要: //     获取一组值,这组值标识指示的属性可应用到的程序元素。//// 返回结果: //     一个或多个 System.AttributeTargets 值。 默认值为 All。public AttributeTargets ValidOn { get; }}
View Code

从AttributeUsage特性的名称上就可以看出它用于描述特性的使用方式。具体来说,首先应该是其所标记的特性可以应用于哪些类型或者对象。AttributeUsage特性的构造函数接受一个 AttributeTargets 类型的参数。

AttributeTargets 是一个位标记,它定义了特性可以应用的类型和对象:

    // 摘要: //     指定可以对它们应用特性的应用程序元素。
    [Serializable][ComVisible(true)][Flags]public enum AttributeTargets{// 摘要: //     可以对程序集应用属性。Assembly = 1,//// 摘要: //     可以对模块应用属性。Module = 2,//// 摘要: //     可以对类应用属性。Class = 4,//// 摘要: //     可以对结构应用属性,即值类型。Struct = 8,//// 摘要: //     可以对枚举应用属性。Enum = 16,//// 摘要: //     可以对构造函数应用属性。Constructor = 32,//// 摘要: //     可以对方法应用属性。Method = 64,//// 摘要: //     可以对属性 (Property) 应用属性 (Attribute)。Property = 128,//// 摘要: //     可以对字段应用属性。Field = 256,//// 摘要: //     可以对事件应用属性。Event = 512,//// 摘要: //     可以对接口应用属性。Interface = 1024,//// 摘要: //     可以对参数应用属性。Parameter = 2048,//// 摘要: //     可以对委托应用属性。Delegate = 4096,//// 摘要: //     可以对返回值应用属性。ReturnValue = 8192,//// 摘要: //     可以对泛型参数应用属性。GenericParameter = 16384,//// 摘要: //     可以对任何应用程序元素应用属性。All = 32767,}
View Code

AllowMutiple 属性用于设置该特性是不是可以重复地添加到一个类型上(默认为false)。

 Inherited 就更复杂一些了,假如有一个类继承自我们的DemoClass,那么当我们将RecordAttribute添加到DemoClass上时,DemoClass的子类也会获得该特性。而当特性应用于一个方法,如果继承自该类的子类将这个方法覆盖,那么Inherited则用于说明是否子类方法是否继承这个特性。

c#自定义Attribute例子:

    [AttributeUsage(AttributeTargets.Class|AttributeTargets.Method, Inherited=false, AllowMultiple=true)]public class RecordAttribute : Attribute{public string RecordType { get; private set; }public string Author { get; private set; }public DateTime Date { get; private set; }public string Memo { get; set; }public RecordAttribute(string recordType, string author, string date){this.RecordType = recordType;this.Author = author;this.Date = Convert.ToDateTime(date);}}
View Code

使用该特性:

    [Record("更新", "zwk", "2015-01-01",Memo="优化")][Record("更新", "zwk", "2015-01-02", Memo = "优化")]
View Code

参考:http://www.csharpwin.com/csharpspace/7700r2735.shtml

转载于:https://www.cnblogs.com/zhengwk/p/5288278.html


http://chatgpt.dhexx.cn/article/egbrfgXN.shtml

相关文章

AttributeUsage属性

除了定制 attributes 之外&#xff0c;可以使用 Attributes 属性定义如何使用这些属性。例如&#xff1a;<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /> [AttributeUsage( validon, AllowMultiple allowmultiple, …

AttributeUsage

AttributeUsage 【AttributeUsage】 System.AttributeUsage声明一个Attribute的使用范围与使用原则。 AllowMultiple 和 Inherited 参数是可选的&#xff0c;所以此代码具有相同的效果&#xff1a; AttributeTarget的值可以参考1。部分可取值如下&#xff1a; 如果 AllowMultip…

吉大软构件和中间件课程-JPA配置方法

吉大软构件和中间件课程-JPA配置方法 JPA连接方法&#xff1a; 1.standalone.xml 文字&#xff1a; <xa-datasource jta"true" jndi-name"java:jboss/datasources/MySqlDS" pool-name"MySqlDS" enabled"true" use-java-c…

JPA 配置文件最详细总结,没有之一!

又来了一个懵懂少年&#xff0c;看我怎么骗你的。 来我们开始学习吧。 PropertyPlaceholderConfigure 载入属性文件&#xff1a; 例如&#xff1a;class"org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><propertyname"loc…

Spring Boot使用spring-data-jpa配置Mysql多数据源

转载请注明出处 :Spring Boot使用spring-data-jpa配置Mysql多数据源 我们在之前的文章中已经学习了Spring Boot中使用mysql数据库 在单数据源的情况下&#xff0c;Spring Boot的配置非常简单&#xff0c;只需要在application.properties文件中配置连接参数即可。 但是往往随…

SpringBoot 配置 JPA

新建项目 在application.properties配置文件中进行配置&#xff08;或者application.yaml中配置也行&#xff09; spring.datasource.urljdbc:mysql://localhost:3306/ssm?characterEncodingutf8&useSSLfalse&serverTimezoneUTC spring.datasource.usernameroot sp…

Springboot---JPA配置

1.在配置文件中写入数据库信息 application.properties配置如下 spring.datasource.primary.urljdbc:mysql://localhost:3306/test1 spring.datasource.primary.usernameroot spring.datasource.primary.passwordroot spring.datasource.primary.driver-class-namecom.mysql.…

spring-boot-starter-data-jpa 配置多个数据源与jpa实体类继承的问题、分页条件查询

JPA的继承注解一般有四种 MappedSuperclass 这个注解应用的场景是父类不对应任何单独的表&#xff0c;多个子类共用相同的属性。 注意&#xff1a; MappedSuperclass注解使用在父类上面&#xff0c;是用来标识父类的作用 MappedSuperclass标识的类表示其不能映射到数据库表&am…

Springboot多数据源+Jpa配置

随着业务复杂程度的增加&#xff0c;单一数据源越来越不满足具体的业务逻辑以及实现。 这里我用到了MySQL和Presto两种数据源&#xff1a; 多数据源配置GlobalDataSourceConfiguration&#xff1a; Configuration public class GlobalDataSourceConfiguration {Bean(name …

springboot--jpa 配置多数据库

使用spring boot jpa 配置多数据源 由于项目整合 以前的功能 但是以前功能存储的数据库是另一个数据库 这两天搜索了一下 遇见了许多坑 在这里记录一下 首先附上我的项目结构 可能有些乱 忘见谅。 pom.xml(把数据库的依赖引入) <!-- mariadb --><dependen…

Spring Data Jpa 配置多数据源

文章目录 1.配置数据库连接信息2.编写数据源配置类3.编写数据库配置4.目录结构 1.配置数据库连接信息 spring:datasource:db1: # 1.0 Datasourceurl: jdbc:mysql://127.0.0.1:3306/test1?useSSLfalse&serverTimezoneGMT%2b8&characterEncodingutf8&connectTimeo…

springboot2+JPA 配置多数据源(不同类型数据库)

注意&#xff1a;看此篇文章之前&#xff0c;springbootjpa的配置环境应搭建好&#xff0c;不会搭可以自行百度。本文章主要讲述配置JPA多数据源。 1.数据源配置文件 application.properties # 数据源thirded&#xff08;oracle数据库&#xff09; spring.jpa.thirded.databa…

jpa配置(jpa配置连接池)

JPA的实体状态有哪些呢&#xff1f; 该接口拥有众多执行数据查询的接口方法&#xff1a; Object getSingleResult()&#xff1a;执行SELECT查询语句&#xff0c;并返回一个结果&#xff1b; List getResultList() &#xff1a;执行SELECT查询语句&#xff0c;并返回多个结果&…

SpringBoot系列之数据库初始化-jpa配置方式

上一篇博文介绍如何使用spring.datasource来实现项目启动之后的数据库初始化&#xff0c;本文作为数据库初始化的第二篇&#xff0c;将主要介绍一下&#xff0c;如何使用spring.jpa的配置方式来实现相同的效果 I. 项目搭建 1. 依赖 首先搭建一个标准的SpringBoot项目工程&am…

Jpa环境配置及入门(增删改查)

案例&#xff1a;客户的相关操作&#xff08;增删改查&#xff09; 1.分析&#xff1a; 1.搭建环境&#xff1a; 创建maven工程&#xff0c;导入相关坐标&#xff1b; 配置使用jpa的核心配置文件&#xff1b; 位置&#xff1b;需要配置到类路径下叫做 META-INF的文件夹下 命…

PHP多国语言开发:CodeIgniter 2PHP框架中的多国语言,语言包(i18n)库

PHP多国语言开发&#xff1a;CodeIgniter 2PHP框架中的多国语言&#xff0c;语言包&#xff08;i18n&#xff09;多国语言库 引言 我们在CodeIgniter开发中经常会碰到多国语言网站&#xff0c;这里我们就来介绍一种简单有效的多国语言的操作方法。 做什么 语言在地址中是这…

Win 10 添加多国语言

不同用户对电脑系统的语言需求也不一样&#xff0c;出于工作原因需要使用其它语言&#xff0c;比如外国友人需要使用英语&#xff0c;俄罗斯语言等&#xff0c;此时很多用户都以为要下载对应语言版本的系统&#xff0c;然后重新安装系统&#xff0c;其实Win10是支持多国语言的&…

手工编译Flex SDK 多国语言包

项目需要将目前版本提供给其它地区&#xff1a;台湾、日韩等&#xff0c;面临着项目语言的国际化问题。 语言代号&#xff1a; 大陆&#xff1a;zh_CN 台湾&#xff1a;zh_TW 香港&#xff1a;zh_HK … 例如想支持繁体&#xff0c;没有zh_TW语言包怎么办&#xff1f; fl…

DevExpress去除多国语言包

DevExpress作为windows开发中较为强大的第三方组件&#xff0c;能极大的提高编程效率和界面效果。但也要引用它较多的dll文件&#xff0c;它专门有个查看dll程序集依赖的工具&#xff0c;在VS的工具菜单下&#xff1a; 在VS的工具菜单内有"DevExpress Assembly Deploymen…

关于VS编译DevExpress默认产生几个多余的多国语言包的问题解决

关于VS编译DevExpress默认产生几个多余的多国语言包的问题解决 VS15开始对于非系统的Dll都会默认复制到本地&#xff0c;即bin\debug下面&#xff0c;复制dll到本地好处在于发布的时候不用再去寻找相关dll,对于dev这么庞大的组件来说&#xff0c;更是如此&#xff0c;当然&…