zoukankan      html  css  js  c++  java
  • [C#] 语法之Attribute

    在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#读取EXIF信息类多
    C#里到底怎么样才能嵌入汇编?
    using和回收资源
    两个由栈组成的队列和两个由队列组成的栈
    C解两道题
    Inside WUAIntroduction
    轮子和做轮子
    致曾经整过的"框架"
    C#动态分配一维数组和二维数组函数
  • 原文地址:https://www.cnblogs.com/neverc/p/4546835.html
Copyright © 2011-2022 走看看