ok,我们写代码,是面向功能的,比方说, Math.Add(x, y)返回x y之和。但是有时候我们希望给代码附加一些特殊属性,而这些属性可能跟功能关系不大。比方说,我们希望Math.Add()能够作为Web服务的方法被调用。为了解决这个问题,.NET就提出Attribute(属性)概念,你可以写
[WebMethod]
public int Add(int x, int y)
{
//...
}
这样编译器在编译Add方法的时候,同时也会把[WebMethod]这个附加的属性也生成并注入到编译结果(程序集)的特定区域,我们称它为元数据区域。这样ASP.NET就可以在运行时扫描属性数据,识别各种Web方法并产生正确的WSDL文档。属性就是一种元数据(所谓元数据,就是描述数据的数据)。其他的元数据包括类型列表,继承关系,接口列表,等等……