你的脸上有麻子这就是你的脸的Attribute

解决方案 »

  1.   

    Attribute是他所修饰的方法或成员或类的附加属性。简单说来,DOTNET运行时利用“反射”机制可以得知他们的各种属性,因而作出某种动作。
    比如在创建一个web service时,加上[WebMethod],运行时就知道他是一个web service,因为会爆露并输出这个web service.
    其实这根以往的语言的函数修饰符和编译器选项大同小异,不同的是DOTNET是在运行时搞掂的,以往是在编译时搞掂的。
      

  2.   

    那么这个属性能用来干吗?
    比如我定义了 [FuckMethod]
             public void Fuck()
               {
                  Console.Writeln("Fuck~~~");
               }
    那么这个属性有什么用吗?能帮助我干什么呢?是不是和注释一样?
    注释是给人看得,而属性是给机器看得???
    请赐教!
      

  3.   

    Attribute是一个类,它在.NET中的地位非常重要:
    Attribute基本上是一个应用于代码中某个项目(例如方法和类)的标记,或者是方法的一个参数,它提供了该项目的额外信息。
    要给一个项目应用Attribute,应在该项目定义前面的方括号中提供Attribute名。某些Attribute带有参数,这些参数应紧放在Attribute名后面的圆括号中。
    从基本的一层来看,把Attribute应用到项目上,就是把该项目的额外信息放在编译好的装配件中,在这个装配件中,这些额外信息可以用在文档说明中作解释性的工作(使用反射的技术,也可以编写C#代码访问这些信息)。自己定制的任何Attribute都可以这么做。但是,在基类中定义的许多Attribute都要由C#编译器显式标识。编译器会对这些Attribute执行某些操作,这些操作可能影响到生成的代码,
    定制Attribute
    Attribute的结构也允许用户在源代码中定义自己的Attribute。显然,如果这么做,这些Attribute就不会影响编译过程,因为编译器不能识别它们,但这些Attribute可以在它编译好的装配件中用作元数据,这些元数据在文档说明中非常有用。但是,把这个想法付诸实践的是使用System.Reflection名称空间中的类,代码可以在运行时读取这些元数据,即定制Attribute可以直接影响代码运行的方式。
    如果应用程序读写数据到数据库中,就可以使用定制Attribute,把了和属性标记为对应的数据库表和列。然后在运行是从装配件中读取这些Attribute,是程序可以自动从数据库的相应位置检索和写入数据,无需为每个表或列编写特定的逻辑。以上文字引自《C#高级编程》一书。我正在写一篇Attribute的使用,还没完成,如果大家有兴趣的话,敬请关注。
      

  4.   

    zero8223(zero8223) :
    你使用了一个FuckMethod,就表明你一定是定义了FuckMethodAttribute类,那个利用System.Reflection名字空间里的类,你可以在运行时间取得这个类实例,那么就可以根据这个FuckMethodAttribute类实例做出某些你需要的动作。说得够简单了吧?
      

  5.   

    Attribute的中文意思是属性,它是一种类。也被称为类的属性成员。它与我们用的字段成员(也就是在C++中的数据成员)不同的是:访问字段成员实际上是对变量的访问,而属性成员在类的对象中是不以变量的形式出现的,它是函数成员的一种。虽然可以象操作变量一样操作一个属性成员,但是在属性成员内部需要向外界提供某个表达式的值,或者接受外界 的值以便修改某个字段成员。我们一般可以这么使用Attribute:
    class Circle
    {
      protected int nColor;
      public int Color
        {
          get
             {
               return nColor;
              }
          set
             {
               nColor=value;
             }
         }
    }
    这样可以很好的保证类的封闭性。我们可以通过共有的函数来访问类中的私有或保护的数据成员。
      

  6.   

    To zero8223:关于C#中的Attribute,您可以参考MSDN中的"Extending Metadata Using Attributes"。这篇文章讲的非常详细,而且附带了大量的例子代码并有说明,其中还以一个DeveloperAttribute为例讲述了如何自定义Attribute和如何使用自定义的Attribute。其实,Attribute并不是C#中的一个新概念,以前在VC++中已经有了。如果对VC++中的Attribute有兴趣,可以参考MSDN中"Attributed Programming"一文,地址是http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vccore/html/vcwlkCustomAttributesTutorial.asp另外,关于cnnjyeziyin提到的内容,有三个名词在C#中是容易产生迷惑的:Fields, Attributes, Properties。这三个名词的中文翻译都称作“属性”,但还是有所区分的:[Serializable]    //Attributes
    class Circle{
    int _radius;    //Fields int radius{
    get{ return _radius; }
    set{ if(value>=0) _radius=value;}
    }  //Properties
    }
    Hogwarts - S(u)ddenly dis@ppeared...

    本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。  
    为了为您创建更好的讨论环境,请参加我们的用户满意度调查(http://support.microsoft.com/directory/worldwide/zh-cn/community/survey.asp?key=(S,49854782))。  
      

  7.   

    补充一下,上面提到的MSDN中讲述C#中的Attribute的文章"Extending Metadata Using Attributes"的地址是http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconextendingmetadatausingattributes.asp
    Hogwarts - S(u)ddenly dis@ppeared...

    本贴子以“现状”提供且没有任何担保,同时也没有授予任何权利。具体事项可参见使用条款(http://support.microsoft.com/directory/worldwide/zh-cn/community/terms_chs.asp)。
      

  8.   

    ms-help://MS.NETFrameworkSDK.CHS/csref/html/vcwlkattributestutorial.htmLook this.