特性

Tpye类可以获得类的所有非私有的成员

Class my=new Myclass();
Type type=my.getType();
type.Name//类的名字
type.NameSpace//类的命名空间
type.Assembly//类所在的程序集
FieldInfo[] array= type.GetFields();//返回值为FieldInfo
PropertyInfo[] array2=type.GetProperties();
MethordInfo[] array3=type.GetMethords();

  程序集

MyClass my=new Myclass();
Assembly assembly=my.GetType().Assembly;
assembly.FullName;
Type[] types= assembly.GetTypes();//当前程序集所有的类

加载程序集
Assembly assembly=Assembly.Load();//
Assembly assembly=Assemmbly.LoadFrom(string path)//

  Obselete特性

[Obsolete("这个方法过时了,使用NewMethord方法")]//特性表示一个方法 被弃用了,
static  void OldMethod()
{
console.WriteLine("Oldmethod");
}
static void NewMethord()
{
}

  Conditional特性

[Conditional("IsTest")]
static void Test1()
{cw ("Test1");   }    
static void Test2()
{cw("Test2");}
Main()
{
Test1();
Test2();
}
要看'IsTest"有没有被定义,#define IsTest,如果定义了”Istest“,才会在Main()方法中调用。
来控制方法是否可以被调用

  调用者信息特性

访问文件路径,代码行数,调用成员名称,就是
static void PrintOut(string str,[CallFilePath]string fileName="",[CallLineNmber]int lineNumber=0,[CallerMemberName]string methodName="")
{cw(str)+fileName+lineNumber+methodName};

  DebuggerStepThrough特性(某些方法肯定不错,跳过这个方法)

[DebuggerStrpThrough]//可以跳过debugger的单步调试,不进入该方法

其他预定义特性

CLScompliant声明可公开的成员应该被编译器检查是否符合CLS,兼容的程序集可以被任何.NET兼容的语言使用

Serializable 结构可以被序列化  NonSerialized不可被序列化 DLLimport非托管代码实现 WebMethod应该被作为XML web服务的一部分暴露,AttributeUsage声明特性能应用到什么类型的程序结构,将这个特性用到特性声明上

原文地址:https://www.cnblogs.com/1521681359qqcom/p/11367047.html