[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:
代码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; } }
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 { }
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 如果觉得还有帮助的话,可以点一下右下角的【推荐】,希望能够持续的为大家带来好的技术文章!想跟我一起进步么?那就【关注】我吧。