文章地址: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# 多线程
- C#操作Excel复制多个单元格问题
- 关于查询数据时,进底条同步显示的问题
- repeater 的问题求救!!!很急。。。。大家来看下帮下忙了
- 问题不难,分数很多,高手赐教
- 从非托管 VARIANT 转换为托管对象的过程中检测到无效 VARIANT。将无效 VARIANT 传递给 CLR 会导致意外的异常、损坏或数据丢失。
- Visual Studio 2010中运行android程序
- 如何在label中动态的显示信息,C# winform
- winform中如何获得datagrid中的行数和列数??
- asp.net PasswordRecovery控件问题 愁死了
- RDLC是否具备这种文本框长文本分页打印功能
- 关于WPF发布页的“应用程序文件”对话框
当编译器看到一个属性被附着给一个类型或成员时,它会搜索具有指定属性名的System.Attribute派生类。如果编译器没有找到匹配的类,它就在指定的属性名后面加上Attribute,然后再进行搜索。因此,常见的使用做法是将属性类名定义为以Attribute结尾,在使用时忽略名称的这一部分
哦!好像编译器多走一步哦,自定义属性在System.Attribute派生类肯定是找不到的.估计这个是为了查找你是否用了.net框架的属性吧
自定义属性要加上Attribute才能找到的。。