码迷,mamicode.com
首页 > Windows程序 > 详细

C#语法之Attribute

时间:2015-06-02 17:28:19      阅读:433      评论:0      收藏:0      [点我收藏+]

标签:

在c#中,定义类的成员,可以定义Property称为属性.Attribute就称为特性.

 

在FCL中,有内置的Attribute.如:

Condition[Attribute]:在什么条件可以调用.(只能作用于返回值为void的方法上)

Obsolete:方法弃用.支持禁用.

代码1:

技术分享
class Program
    {
        static void Main(string[] args)
        {
            Func();
            Console.ReadLine();
        }

        [Obsolete("you can use Func to replace this",true)]
        private static void Test()
        {
            Console.WriteLine("noooo");
        }

        private static void Func()
        {
            Console.WriteLine("yesss");
        }
    }
    class T
    {
        [Conditional("DEBUG")]
        public static void M(string str)
        {
            Console.WriteLine("Method{0}", str);
        }
    }
内置Attribute

 

自定义Attribute:

代码2:

技术分享
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
    public class HelpAttribute : Attribute
    {
        public HelpAttribute(string str)
        {
            HelpStr = str;
        }
        public string Name { get; set; }
        public string HelpStr { get; set; }
    }
自定义Attribute

AttributeTargets.Class:作用目标只能是类.

AllowMultiple:是否可以在一个元素上多次作用特性.

Inherited:当目标被继承时,特性是否也继承.

 

反射获取类的Attribute信息:

代码3:

技术分享
class Program
    {
        static void Main(string[] args)
        {
            var attrs = typeof(MyClass).GetCustomAttributes(false);
            for (int i = 0; i < attrs.Length; i++)
            {
                var attr = attrs[i] as HelpAttribute;
                if (attr != null) Console.WriteLine(attr.HelpStr + attr.Name);
            }
            Console.ReadLine();
        }
    }

    [Help("good", Name = " class")]
    class MyClass
    {

    }
反射获取特性信息

 

C#语法之Attribute

标签:

原文地址:http://www.cnblogs.com/neverc/p/4546835.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!