标签 Attribute

在一个类上面放一个标签,可以用来表示一些特定规则,比如某个对象的某个属性不想被json化,那么我们在它头上放个标签就行了,或是做ORM时指定某个Class对应的table名字等。

最后标签是通过反射来调用的,一个类只要继承了微软的Attribute类就可以当标签来使用了.

[AttributeUsage(AttributeTargets.All)]//指定Attribute的使用范围,比如只能在class级别使用
public class Column : Attribute
{
    public Column(string str)
    {
        this.str = str;
    }
    public string str { get; set; }
}
//第2个
[AttributeUsage(AttributeTargets.All)]
public class Table : Attribute
{
    public Table(string str)
    {
        this.str = str;
    }
    public string str { get; set; }
}

//2个属性
[Column("class")]
[Table("table class")]
public class Abc
{
    public string x { get; set; }
    [Column("attr")]
    public Int32 y { get; set; }
}
protected void Page_Load(object sender, EventArgs e)
{
    //通过反射可以调用到这个类型头上的attr
    Type type = typeof(Abc);    bool isGot = Attribute.IsDefined(type, typeof(Column)); //查看有没有某个Attribute
    Attribute[] attrs = Attribute.GetCustomAttributes(type); //批量获取
    string xy =  attrs.First().GetType().Name; //可以查看它的名字来选择想要的,或是看有没有想要的.
    Column column = (Column)Attribute.GetCustomAttribute(type, typeof(Column)); //强转
    Column[] columns = (Column[])Attribute.GetCustomAttributes(type, typeof(Column));
    column = columns[0];
    string x = column.str; //调用方法或是公开属性等等都可以        

    //实例化之后也是可以一样拿
    Abc a = new Abc();
    PropertyInfo info = a.GetType().GetProperty("y");
    Column attribute2 = (Column)Attribute.GetCustomAttribute(info, typeof(Column));
    string xyz = attribute2.str;
}
时间: 2024-10-22 10:31:59

标签 Attribute的相关文章

有关C#标签Attribute的熟悉

Attribute 简单用法: 最近用到了,所以静下心来找些资料看了一下,终于把这东西搞清楚了. 一.什么是Attribute 先看下面的三段代码: 1.自定义Attribute类:VersionAttribute [AttributeUsage(AttributeTargets.Class)] public class VersionAttribute : Attribute { public string Name { get; set; } public string Date { get

JavaEE自定义标签:标签类的创建、tld配置文件的创建(位置、如何创建)、Web-XML配置、JSP应用

1.标签 以类似于html标签的方式实现的java代码的封装. 第一:形成了开发标签的技术标准---自定义标签的技术标准. 第二:java标准标签库(sun之前自己开发的一系列的标签的集合)jstl,以及表达式语言EL. 2.自定义标签 (1)理解: 可以允许用户自己根据自己的需要,去开发自己的标签的技术规范. 通俗:在Jsp页面上,以简单的标签封装java代码的操作. //在自定义标签类中,先调用setPageContext()实例化内置对象: //然后是doStartTag()方法,核心代码

【自定义标签开发】09-标签案例-开发foreach标签

我们接下来开发一个迭代集合的标签.我们知道struts中有一个<s:iterator>标签用来迭代集合,我们接下来模仿它写一个自定义标签. 前台的效果如下: <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@taglib uri="/example" prefix="z" %>

Asp.net 处理程序(第五篇)

HttpApplication有19个标准事件,当到达第8个事件PostMapRequestHandler触发的时候,标志着已经获取到了处理请求的处理程序对象,在第11个事件PreRequestHandlerExecute之后,HttpApplication将执行这个处理程序. 问题: HttpApplication如何选择处理程序? 处理程序是什么对象? HttpApplication如何得到这个处理程序对象? 一.处理程序 针对不同的请求,Asp.net要有不同的处理,在Asp.net中通过

XML学习总结(一)

一.HTML和XML的区别之处 HTML HyperTextMarkupLanguage 超文本标记语言,由w3c组织规定,约100多个标签,用于规定网页结构. XML ExtendMarkupLanguage 可扩展标记语言,标签由开发者自定义 作用 -描述带关系的数据,作为软件的配置文件,包含与被包含的关系 例如:使用ip(255.43.12.54)地址和端口(1521),连接oracle数据库,保存学生数据. 把ip地址端口配置到xml文件: host.xml <host> <ip

检测浏览器对HTML5新input类型的支持

HTML5新增加了很多input元素类型,比如color,date,datetime,datetime-local,email,month,number,range,search,tel,time,url,week等. 通过以下方法可以检测浏览器是否支持这些新的input类型: var i = document.createElement('input'); i.setAttribute('type', 'date'); //浏览器不支持date类型 if(i.type == 'text'){

Yii源码阅读笔记(十五)

Model类,集中整个应用的数据和业务逻辑——验证 /** * Returns the attribute labels. * 返回属性的标签 * * Attribute labels are mainly used for display purpose. For example, given an attribute * `firstName`, we can declare a label `First Name` which is more user-friendly and can *

xml增强学习笔记

2 Dom4j修改xml文档 2.1 写出内容到xml文档 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt) wirter.write(Document); 2.2 修改xml文档的API 增加: DocumentHelper.createDocument()  增加文档 addElement("名称")  增加标签 addAttribute("名称",“值”)  增加属性 修改: Attrib

6、XML(2)

1 总结XML基础 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大小写.有且仅有一个根标签. 属性: 可有多个属性,但属性值必须用引号(单引号或双引号)包含,但不能省略,也不能单双混用. 文档声明: <?xml version="1.0" encoding="utf-8"?> encoding="