• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c#属性(Attribute)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

C# 属性特征非常有用,以下是属性特征的实验性总结(c#2.0)

1.属性只在被访问时构造,每访问一次就构造一次。

 

class MyAttribute : Attribute
{
public MyAttribute(string name)
{
this.name = name;
COUNT
++;
}

internal string name = string.Empty;
internal static int COUNT = 0;
}

[MyAttribute(
"attribute")]
class MyClass
{
public MyClass()
{

}
}

class Program
{
static void Main(string[] args)
{
MyClass myClass
= new MyClass();


myClass.GetType().GetCustomAttributes(
false);
myClass.GetType().GetCustomAttributes(
false);
myClass.GetType().GetCustomAttributes(
false);

//3
System.Console.WriteLine(MyAttribute0.COUNT);
}
}

 

 

 

2.应用某一级别上的属性集合,编译后的顺序可能会改变(具体规则未知)。

 

[MyAttribute("myattribute0"), MyAttribute("myattribute1"), MyAttribute("myattribute2")]
[MyAttribute(
"myattribute11")]
[MyAttribute(
"myattribute22")]
class MyClass
{
public MyClass()
{

}
}

class Program
{
static void Main(string[] args)
{
MyClass myClass
= new MyClass();
object[] objs = myClass.GetType().GetCustomAttributes(typeof(MyAttribute),true);
foreach(MyAttribute myAttribute in objs)
{
Console.WriteLine(myAttribute.name);
}

//myattribute0
//myattribute22
//myattribute1
//myattribute2
//myattribute11
}
}

 

 

 

 

3.属性的可附带数据只限于简单数据类型

 

bool,byte,char,double,float,int,long,short,string,System.Type,object,enum
以上类型的array

 

4.属性常用API(可参考MSND)

 

AttributeUsage //属性特征类
Attribute.GetCustomAttribute
Attribute.GetCustomAttributes
Type.GetCustomAttribute
Type.GetCustomAttributes
......

 

5.疑问

  @属性竟然是元数据级别的,上面1条目的特征是否太浪费了

  @条目2的特征让我很困惑,编译器做了什么手脚,规则是啥


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
反射技术与工厂方法(usingC#)发布时间:2022-07-13
下一篇:
C#NPOI导出Excel和EPPlus导出Excel比较发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap