最近遇到一个类是这样定义的:
[BaseFacade()]
class CreatCHSetFacade:ContextBoundObject
{
}
请问类定义前的 [BaseFacade()] 是什么意思?做什么用的?

解决方案 »

  1.   

    这是类的一个修饰,叫Attribute,呵呵。根据不同的attribute有一些不同的功能,提供给编译器或者反射等用途。
      

  2.   

    你说的这个BaseFacade这个Attribute我没见过,应该不是在.NET Framework中定义的标准的Attribute,可能是自己添加的。
      

  3.   

    当我在[BaseFacade()]上点“转到定义”时,转到了下面的类了:
    [AttributeUsage(AttributeTargets.Class)]
    public class BaseFacadeAttribute : ProxyAttribute
    {
    }
    这是一个反射吗?
      

  4.   

    具体的用法参考这个:
    http://www.cnblogs.com/luohuarenduli/archive/2007/05/14/746335.html这个不好讲,我的理解也不全面。单说下我的:
    这个东西还真不好解释啊。大体上就是附加在类上的一种说明。你的理解是对的,它是用于反射的。 
    至于用途的嘛,很多。 
    1:可以给编译器用。 
    比如[obsolete]属性标签就表示这个类已经不推荐使用,有更好的方法实现。你在任何一个类上标记了这个属性标签之后,编译时会有警告。 
    比如[StructLayout]这个标签用于提供类在内存中的布局信息,这主要是用于调用外部dll之类的用途。 
    比如[Marshal]也是提供类似于StructLayout的信息用于说明具体的数据成员如何布局和列集。 
    2:可以给代码用。 
    比如,可以添加一些[Description]属性标签,在类中。然后你在程序中可以通过反射得到相关的信息。
    比如:
    public class Description : Attribute
    {
        public Description(string des) { DES = des; }
        public string DES { get; set; }
    }
    [Description("A Class")]
    public class TestA { }
    [Description("B Class")]
    public class TestB { }
    public class Program
    {
        static void Main(string[] args)
        {
         
            TestA ta = new TestA();
            TestB tb = new TestB();        var dA = ta.GetType().GetCustomAttributes(typeof(Description), false)[0] as Description;
            var dB = tb.GetType().GetCustomAttributes(typeof(Description), false)[] as Description;
            Console.WriteLine(dA.DES);
            Console.WriteLine(dB.DES);        Console.ReadKey();
    }
    }这段代码的输出将是:
    A Class
    B Class再多没法说了