文章地址:http://developer.51cto.com/art/200908/141545.htm引用里面的一句话如下:
2.这里有一个约定:所有自定义的特性名称都应该有个Attribute后缀。因为当你的Attribute施加到一个程序的元素上的时候,编译器先查找你的Attribute的定义,如果没有找到,那么它就会查找“Attribute名称"+Attribute的定义。如果都没有找到,那么编译器就报错。这就是为什么我可以再上面第一段代码中,定义一个VersionAttribute,但在第二段代码中,我使用却是Version这个Attribute。:>编译器先查找你的Attribute的定义,这句话的意思是指编译器先按Version这个名称去找下面这段代码吗?[AttributeUsage(AttributeTargets.Class)]
public class VersionAttribute : Attribute
{
public string Name { get; set; }
public string Date { get; set; }
public string Describtion { get; set; }
}
如果没有找到,那么它就会查找“Attribute名称"+Attribute的定义.
我的理解:编译器先按Version去找肯定是找不到的因为这个类名为:VersionAttribute,然后它再根据Attribute名称"+Attribute去查找的?我感觉我理解有问题,不知道编译器是怎么查找的过程.
2.这里有一个约定:所有自定义的特性名称都应该有个Attribute后缀。因为当你的Attribute施加到一个程序的元素上的时候,编译器先查找你的Attribute的定义,如果没有找到,那么它就会查找“Attribute名称"+Attribute的定义。如果都没有找到,那么编译器就报错。这就是为什么我可以再上面第一段代码中,定义一个VersionAttribute,但在第二段代码中,我使用却是Version这个Attribute。:>编译器先查找你的Attribute的定义,这句话的意思是指编译器先按Version这个名称去找下面这段代码吗?[AttributeUsage(AttributeTargets.Class)]
public class VersionAttribute : Attribute
{
public string Name { get; set; }
public string Date { get; set; }
public string Describtion { get; set; }
}
如果没有找到,那么它就会查找“Attribute名称"+Attribute的定义.
我的理解:编译器先按Version去找肯定是找不到的因为这个类名为:VersionAttribute,然后它再根据Attribute名称"+Attribute去查找的?我感觉我理解有问题,不知道编译器是怎么查找的过程.
解决方案 »
- 关于正则
- C#写计算器,键盘keypress关联鼠标click点击事件,只响应数字按键,无法响应加,减,乘,除,小数点按键.
- 跪求c# winfrom让路由器重启!路由器型号随便一个!最好是水星RM808
- web2.0技术
- C#和COM的通讯问题,急死了!!
- -=@@@紧急问题,大家来看看啊。谢谢啊!@@@=-
- .net中EF框架里的删除语句怎么写
- User.Identity.Name
- 请问我装的.net为什么不能显示button按扭啊?
- ♦♦请问有没有更快的清屏函数和复制函数♦♦
- RDLC是否具备这种文本框长文本分页打印功能
- 关于WPF发布页的“应用程序文件”对话框
当编译器看到一个属性被附着给一个类型或成员时,它会搜索具有指定属性名的System.Attribute派生类。如果编译器没有找到匹配的类,它就在指定的属性名后面加上Attribute,然后再进行搜索。因此,常见的使用做法是将属性类名定义为以Attribute结尾,在使用时忽略名称的这一部分
哦!好像编译器多走一步哦,自定义属性在System.Attribute派生类肯定是找不到的.估计这个是为了查找你是否用了.net框架的属性吧
自定义属性要加上Attribute才能找到的。。