特性简介

特性

特性就是将一段特性代码和我们的代码组合,为我们的某些代码添加一些信息

自带的三个特性

[Obsolete]特性,主要用于标记过时代码或已被替换的旧代码

该特性有两个参数:

message:主要用于添加描述信息

error:是一个bool值,false为生成一个警告,true为报错

[Obsolete("过时方法")]
private static void OutModed()
{
    Console.WriteLine("我是过时的方法");
}

调用该方法时:

 

[Conditional]特性,主要用于忽略某个方法或属性

参数为条件或方法的名称,此参数需要区分大小写

[Conditional("DEBUG")]
private static void Debug()
{
    Console.WriteLine("我是debug");
}

[Conditional("Trace")]
public static void Trace()
{
    Console.WriteLine("我是TRACE");
}

调用这两个方法:

 [AttributeUsage]描述了如何使用一个自定义特性类

  • 参数AttributeTargets 指定可以应用特性的类别
  • 参数allowMultiple 指示该特性是单用还是多用  默认false
  • 参数inherited是否可以继续 默认true
[AttributeUsage(AttributeTargets.Class|AttributeTargets.Method,AllowMultiple = false)] //可用|规定多种可应用类别
class TestAttribute : Attribute
{
    public TestAttribute(int howManyTimes)=> this.HowManyTimes = howManyTimes;
    public string WhatDoseItDo { get; set; }
    public int HowManyTimes { get;private set;}
}        

上述特性只声明了类和方法,所以如下用在结构中会报错

[Test(12)] //会报错,因为只声明了Class,Method
struct Test1
{
    //结构
}

上述特性AllowMutiple为false,所以不能重复使用

[Test(12)]
[Test(13)]
class Test1
{   
}

可直接在调用特性时为特性成员赋值

[Test(1000,WhatDoseItDo ="voodoo")]
public class TestClass { }

 

posted @ 2018-12-31 19:32  邢韬  阅读(174)  评论(0编辑  收藏  举报