类的特性反射ObsoleteContiona Assembly程序集

    xiaoxiao2025-03-01  17

                   Type能反应一个类的信息,包含的字段属性方法等特性,是抽象的不能被实例化,只有信息没有实际的数据

                    Type 反射数据 位于System.Reflection命名空间下

                  类带有的默认方法 Tostring,Equals,GetHashCode,GetType

              Assembly 程序集合 是 由exe 和dell  组成 

              Assembly  类在System.Reflection命名空间中,允许访问程序集中的元数据,可以加载和执行程序集

           Obsolete 是用于方法的更新 ,方法前加上[Obsolete]表示方法过时 被弃用并且显示警告

             DebuggerStepThrough 单步调试 特性,可以告诉调试器不要进入该方法或者类,结构,构造方法,访问器

                                                    位systerm。Diagnostic下  

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

         Serializable       生命结构可以被序列化

         NonSerialized    生命结构不可以序列化

        DllImport                   声明是非委托代码实现的

        WebMethod               生命方法应该被作为XML Web服务的一部分暴露

        AttributeUsage        生命特性 能应用到什么类型的程序结构。

    ————————————————————————————————————————

    using System.Diagnostics; //诊断  相关Conditional特性 using System.Runtime.CompilerServices; //相关[CallerFilePath]

      using System.Reflection;

    namespace 类的各种特性 {     class Program     {

           //方法还是会被编辑,添加到程序集中,只是不执行相关的调用         //[Conditional("IsTest")]    //停止方法的运行的特性,IsTest如果没有宏定义就停止,如果在同步有宏定义就可以运行     //    static void Test2()     //    {     //        Console.WriteLine("text2");     //    }         static void PrintOut(string str,[CallerFilePath]string fileName="",[CallerLineNumber]int lineNumber=0,[CallerMemberName]string merhodName="")         {             Console.WriteLine(str);             Console.WriteLine(fileName);             Console.WriteLine(lineNumber);             Console.WriteLine(merhodName);             Console.WriteLine();         //当被调用的时候就会 显示脚本所在的完整路径,在第几行被调用,调用所在的方法名         }         static void Main(string[] args)         {             MyClass my= new MyClass();             Type type = my.GetType();             Console.WriteLine(type.Name);             //类的名称             Console.WriteLine(type.Namespace);    //类所在的命名空间                              FieldInfo[] array=type.GetFields();     //获取类的字段             foreach(var fieldinfo in  array)             {                 Console.WriteLine(fieldinfo.Name+",");             }                         PropertyInfo[] arry2 = type.GetProperties();    //获取类的属性             foreach(var proprty in arry2)             {                 Console.WriteLine(proprty.Name + ",");             }             MethodInfo[] arry3 = type.GetMethods();      //获取类的方法             foreach(var method in arry3  )             {                 Console.WriteLine(method.Name + ",");             }

      MyClass my = new MyClass();             Assembly assem = my.GetType().Assembly;             Console.WriteLine(assem.FullName);    //程序集的名称             Type[] typs = assem.GetTypes();   //获取程序集内的类             foreach(var typ in typs)             {                 Console.WriteLine(typ);             };             Assembly assembly1 = Assembly.Load("SomeAssembly");             //根据程序集的名字加载程序集,它会在本地目录和全局程序集缓存目录查找符合要求的             Assembly assenbly2 = Assembly.LoadFrom(@"c:\x\xx\xxx\SomeAssenmebly.dll");             //程序集的完整路径,不会收索其它位置             Console.ReadKey();         }     } }

      
    转载请注明原文地址: https://ju.6miu.com/read-1296765.html
    最新回复(0)