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声明特性能应用到什么类型的程序结构,将这个特性用到特性声明上