`
guoyiqi
  • 浏览: 1002690 次
社区版块
存档分类
最新评论

C#自定义Attribute举例!(转自:http://archive.cnblogs.com/a/471288/)

 
阅读更多

usingSystem;

namespaceConsoleApplication1
{
//定义枚举
[System.Flags()]
publicenumAccountsE
{
Saveings
=0x0001,
Checking
=0x0002,
Brokerage
=0x0004
}
//自定义特性
[System.AttributeUsage(AttributeTargets.Class)]
publicclassAccountsAttribute:Attribute
{
publicAccountsEaccounts;
publicAccountsAttribute(AccountsEaccounts)
{
this.accounts=accounts;
}
}
[ConsoleApplication1.Accounts(AccountsE.Saveings)]
classChildAccount{}
[ConsoleApplication1.Accounts(AccountsE.Saveings
|AccountsE.Checking|AccountsE.Brokerage)]
classAdultAccount{}

classClass1
{
[STAThread]
staticvoidMain(string[]args)
{
CanWriteCheck(
newChildAccount());
CanWriteCheck(
newAdultAccount());
CanWriteCheck(
newClass1());
}
publicstaticvoidCanWriteCheck(objectobj)
{
//构造AccountsAttribute实例
AccountsAttributechecking=newAccountsAttribute(AccountsE.Checking);
//通过Attribute.GetCustomAttribute的静态方法来得到指定的特性的实例,然后就可以读取实例的属性了,用此来判断
//依据
AttributevalidAccounts=Attribute.GetCustomAttribute(obj.GetType(),typeof(AccountsAttribute),false);
if(validAccounts!=null)
{
AccountsAttributetmpAccounts
=validAccountsasAccountsAttribute;
if((checking.accounts&tmpAccounts.accounts)==checking.accounts)
{
Console.WriteLine(
"{0}typescanwritechecks.",obj.GetType());
}
else
{
Console.WriteLine(
"{0}typecannotwritechecks.",obj.GetType());
}
}
else
{
Console.WriteLine(
"{0}typecannotwritechecks.",obj.GetType());
}

}
}
}

分享到:
评论

相关推荐

    http://www.w3.org/TR/html4/loose.dtd

    for presentation attribute and elements is required. HTML 4 includes mechanisms for style sheets, scripting, embedding objects, improved support for right to left and mixed direction text, ...

    xom-1.1.jar

    xml转json时的依赖包, Size: 421.45 KB Detail: META-INF/ META-INF/MANIFEST.MF 1.15 KB nu/ nu/xom/ nu/xom/ASCIIWriter.class 499.0 bytes nu/xom/Attribute$Type.class 2.04 KB nu/xom/...

    交通预测模型合集:STGCN、DCRNN、ASTGCN、Graph wavenet、STGNN、STSGCN、STFGNN

    所涉及的交通预测相关的模型,其原文章。注:仅学习使用哈~主要包含的模型:STGCN、DCRNN、ASTGCN、Graph wavenet、STGNN、STSGCN、STFGNN。 模型所在的文章分析链接:(注:下述链接预计在2025年发布) ...

    JSP标签,采用web.xml引入标签库描述文件

    本文将深入探讨JSP标签,特别是自定义标签,并解释如何通过`web.xml`配置文件来引入标签库描述文件,以便在JSP页面中使用这些标签。 首先,JSP标准标签库(JSTL)是一套预定义的标签,用于处理常见的任务,如迭代、...

    AAPT: error: resource attr/** (aka com.**.app:attr/**) not found.

    问题记录 记录项目中的一个问题,不知什么时候,运行项目会出现这个错误: 解决方法 buildscript { repositories { ... classpath 'com.android.tools.build:gradle:3.6.2' } } 反思 项目出现问题

    dubbo.xsd阿里巴巴开源xsd文件

    <?xml version="1.0" encoding="UTF-8" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:beans="http://www.springframework.org/schema/beans"... <xsd:attribute name=

    C#特性Attribute的实际应用之:为应用程序提供多个版本

    在.NET框架中,C#的特性(Attribute)是一种元数据,可以附加到代码的各种元素上,如类、方法、属性等,以提供额外的信息。这些信息可以在运行时被反射机制读取,从而实现各种功能。在标题“C#特性Attribute的实际...

    一步步写嵌入式操作系统.zip

    编译错误2: gcc -g -O2 -o skyeye skyeye.o ./utils/libutils.a ./arch/arm/libarm.a ./device/libdev.a ./arch/mips/libmips.a ./arch/ppc/libppc.a ./arch/bfin/libbfin.a ./arch/mips/libmips.a ./arch/coldfire...

    离散化方法:Class-Attribute Contingency Coefficient (CACC - MATLAB):CACC离散化方法的正确实现。http://cs.adelaide.edu.au/~jzaragoza-matlab开发

    这是 Tsai 等人在 2008 年发表的论文“A Discretization Algorithm Based on Class-Attribute Contingency Coefficient”中出现的离散化方法的正确 MATLAB 实现。 如果您尝试了其他一些实现,但没有收到论文中报告...

    问题解决:ImportError: No module named paddle.v2

    问题描述 在使用paddlepaddle进行深度学习过程中需要导入Ploter from paddle.v2.plot import Ploter 但出现问题: Traceback (most recent call last): File D:/xxx.py, line 13, in from paddle.v2.plot import...

    spring自定义标签

    在Spring框架中,自定义标签是一项非常实用的功能,它允许我们根据项目需求创建自己的XML配置元素,提升代码的可读性和可维护性。本篇将深入探讨如何扩展Spring,实现自定义标签,包括schema配置、自定义标签的定义...

    .net中Attribute、TypeConverter、UITypeEditor的自定义--.net自定义控件属性特性配置及相关类的设计

    3、例子中实现了一个自定义的Attribute:DisplayNameAttribute和一个自定一个TypeConverter:EnumConverter,以支持显示的值与实际选中的值可以不同并一一对应。 注意,各个属性均是自己定义的一个枚举类型...

    C# 自定义特性

    在C#编程语言中,特性(Attribute)是一种元数据,它可以提供附加信息到代码的不同元素,如类、方法、属性等。这些元数据在编译时不会直接影响代码的行为,但可以在运行时通过反射机制被程序读取和使用,从而实现...

    高德获取servlet传递参数并显示.zip_chartlgy_servlet_高德_高德地图

    AMap.plugin(['AMap.Marker'], function () { initMap(); }); ``` 在上述代码中,`${latitude}`和`${longitude}`代表从Servlet传递过来的纬度和经度,它们将在JSP页面渲染时被替换为实际值。 总结一下,这个例子...

    FFmpeg-安装过程

    ffmpeg -i audio1.mp3 -i audio2.mp3 -filter_complex "[0:a][1:a]amix=inputs=2[a]" -map "[a]" output.mp3 ``` FFmpeg的安装和使用涉及多方面知识,包括编译原理、多媒体处理、编码标准等。熟练掌握FFmpeg能极...

    Android XML attribute

    ### Android XML Attribute详解 在Android开发中,XML文件扮演着非常重要的角色,特别是在定义界面布局、样式、动画等方面。为了帮助开发者更好地理解Android中的各种XML属性及其用途,本文将详细介绍部分核心XML...

    Android代码-一个可爱的时钟view

    A lovely clock view. 中文 Here's the normal effect: Here's the effect when the alarm go off: Here's the effect when using custom colors: Use Add it in your root build.gradle at the end of ...

    c#的attribute实例源码

    C#的Attribute是一种元数据,它允许我们向代码添加额外的信息,这些信息可以在编译时或运行时被程序集、编译器、反射或其他工具使用。Attribute不是代码的一部分,它们不直接影响程序的执行,但提供了方便的方式来...

    BeRoot, 特权升级项目 Windows/Linux/Mac.zip

    BeRoot, 特权升级项目 Windows/Linux/Mac BeRoot项目BeRoot项目是一个发布工具,用于检查常见的以找到一种方法来升级我们的特权。它已经被添加到 pupy 项目作为一个post开发模块( 所以它将在内存中执行而不需要触摸...

Global site tag (gtag.js) - Google Analytics