亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

【C#】.NET提供了哪些類型來實現反射

2019-11-14 13:30:36
字體:
來源:轉載
供稿:網友

實現反射的類型大多數都定義在System.Reflection命名空間之下。

Assembly  定義一個Assembly,它是可重用、無版本沖突并且可自我描述的公共語言運行庫應用程序構造塊。

AssemblyName  完整描述程序集的唯一標識

EventInfo  發現事件的屬性(Attribute)并提供對事件元數據的訪問權

FieldInfo  發現字段屬性(Attribute)并提供對字段元數據的訪問權

LocalVariableInfo  發現局部變量的屬性,并提供對局部變量元數據的訪問

ManifestResourceInfo  包含清單資源拓撲信息

MemberInfo  獲取有關成員屬性的信息,并提供對成員元數據的訪問

MethodBase  提供有關方法和構造函數的信息

MethodBody  提供對用于方法體的元數據和MSIL的訪問

Module  在模塊上執行反射

ParameterInfo  發現參數屬性(Attribute)并提供對參數元數據的訪問

PRopertyInfo  發現屬性(Property)的屬性(Attribute)并提供對屬性(Property)元數據的訪問

 

示例:

using System;using System.Reflection;namespace UseReflection{    partial class UseReflection    {        /// <summary>        /// 分析程序集        /// </summary>        /// <param name="assembly"></param>        private static void AnalyzeAssembly(Assembly assembly)        {            // 打印程序集的名稱            Console.WriteLine("程序集名字:" + assembly.FullName);            // 打印程序集的位置            Console.WriteLine("程序集位置:" + assembly.Location);            // 打印程序集是否存在于GAC中            Console.WriteLine("程序集是否存在于GAC中:" + assembly.GlobalAssemblyCache.ToString());            // 打印包含程序集清單的模塊名單            Console.WriteLine("包含程序集清單的模塊:", assembly.ManifestModule.Name);            // 打印程序集的CLR版本            Console.WriteLine("運行程序集需要的CLR版本:", assembly.ImageRuntimeVersion);            Console.WriteLine("現在開始分析引用的程序集");            Module[] modules = assembly.GetModules();            foreach (Module module in modules)            {                AnalyzeModule(module);            }        }        /// <summary>        /// 分析模塊        /// </summary>        /// <param name="module"></param>        private static void AnalyzeModule(Module module)        {            Console.WriteLine("模塊名:" + module.Name);            Console.WriteLine("模塊的UUID:" + module.ModuleVersionId);            Console.WriteLine("開始分析模塊下的類型");            Type[] types = module.GetTypes();            foreach (Type type in types)            {                AnalyzeType(type);            }        }        /// <summary>        /// 分析類型        /// </summary>        /// <param name="type"></param>        private static void AnalyzeType(Type type)        {            Console.WriteLine("類型名字:" + type.Name);            Console.WriteLine("類型的類別:" + type.Attributes);            if (type.BaseType != null)            {                Console.WriteLine("類型的基類是:" + type.BaseType.Name);            }            Console.WriteLine("類型的GUID:" + type.GUID);            // 設置感興趣的類型成員            BindingFlags flags = (BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance);            // 分析成員            FieldInfo[] fields = type.GetFields(flags);            if (fields.Length > 0)            {                Console.WriteLine("開始分析類型的成員");                foreach (FieldInfo field in fields)                {                    AnalyzeField(field);                }            }            // 分析包含的方法            MethodInfo[] methods = type.GetMethods(flags);            if (methods.Length > 0)            {                Console.WriteLine("開始分析類型的方法");                foreach (MethodInfo method in methods)                {                    AnalyzeMethod(method);                }            }            // 分析屬性            PropertyInfo[] properties = type.GetProperties(flags);            if (properties.Length > 0)            {                Console.WriteLine("開始分析類型的屬性");                foreach (PropertyInfo property in properties)                {                    AnalyzeProperty(property);                }            }        }        /// <summary>        /// 分析成員        /// </summary>        /// <param name="field"></param>        private static void AnalyzeField(FieldInfo field)        {            Console.WriteLine("成員名字:" + field.Name);            Console.WriteLine("成員的類別:" + field.Attributes);            Console.WriteLine("成員的類型名:" + field.FieldType.Name);        }        /// <summary>        /// 分析方法        /// </summary>        /// <param name="method"></param>        private static void AnalyzeMethod(MethodInfo method)        {            Console.WriteLine("方法名字:" + method.Name);            Console.WriteLine("方法的類別:" + method.Attributes);            Console.WriteLine("開始分析方法的參數");            ParameterInfo[] parameters = method.GetParameters();            if (parameters.Length <= 0)            {                Console.WriteLine("方法沒有參數");            }            foreach (ParameterInfo parameter in parameters)            {                AnalyzeParameter(parameter);            }            Console.WriteLine("分析方法的返回參數");            ParameterInfo retpar = method.ReturnParameter;            AnalyzeParameter(retpar);        }        /// <summary>        /// 分析方法參數        /// </summary>        /// <param name="parameter"></param>        private static void AnalyzeParameter(ParameterInfo parameter)        {            Console.WriteLine("參數名字:" + parameter.Name);            Console.WriteLine("參數的類別:" + parameter.Attributes);            Console.WriteLine("參數的類型:" + parameter.ParameterType.Name);        }        /// <summary>        /// 分析屬性        /// </summary>        /// <param name="property"></param>        private static void AnalyzeProperty(PropertyInfo property)        {            Console.WriteLine("屬性名字:" + property.Name);            Console.WriteLine("屬性的類別:" + property.Attributes);            Console.WriteLine("是否可讀:" + property.CanRead.ToString());            Console.WriteLine("是否可寫:" + property.CanWrite.ToString());        }    }}

 

using System;using System.Reflection;using System.Security.Permissions;namespace UseReflection{    [PermissionSet(SecurityAction.Demand, Name = "FullTrust")]    partial class UseReflection    {        static void Main(string[] args)        {            Assembly assembly = Assembly.LoadFrom(@"../../../../SimpleAssembly/SimpleAssembly/bin/Debug/SimpleAssembly.exe");            AnalyzeAssembly(assembly);            // 創建一個程序集中的類型的對象            // 這里嘗試創建SimpleAssembly對象            Console.WriteLine("利用反射創建類型");            string[] pars = { "測試反射" };            object o = assembly.CreateInstance(assembly.GetModules()[0].GetTypes()[0].ToString(), true, BindingFlags.CreateInstance, null, pars, null, null);            Console.WriteLine(o);            Console.Read();        }    }}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美一级片一区| 日韩av网站电影| 在线观看不卡av| 久久久久久久久久久免费精品| 日韩黄在线观看| 国产91色在线| 韩国欧美亚洲国产| 国产综合视频在线观看| 91国产精品视频在线| 欧美特级www| 在线观看欧美www| 欧美中文在线观看国产| 热久久这里只有精品| 国产精品久久激情| 国产精品第三页| 欧美国产精品人人做人人爱| 亚洲色图激情小说| 国产成人精品综合久久久| 中文字幕亚洲在线| 亚洲精品一区av在线播放| 永久555www成人免费| 18久久久久久| 欧美激情视频在线免费观看 欧美视频免费一| 久久久久久com| 国产成人精品在线观看| 日本精品一区二区三区在线| 欧美富婆性猛交| www国产亚洲精品久久网站| 欧美韩日一区二区| 国产综合久久久久久| 成人久久一区二区三区| 国产免费一区二区三区香蕉精| 欧美大全免费观看电视剧大泉洋| 色噜噜狠狠狠综合曰曰曰| 亚洲第一页自拍| 91国内产香蕉| 国产午夜一区二区| 色无极影院亚洲| 国产精品99免视看9| 国模精品视频一区二区三区| 欧美日韩中文字幕日韩欧美| 精品久久久免费| 视频一区视频二区国产精品| 日本欧美中文字幕| 亚洲成人精品av| 欧美日韩第一视频| 亚洲一区二区少妇| 国产一区二区三区毛片| 成人观看高清在线观看免费| 91精品国产综合久久香蕉的用户体验| 国内精品小视频| 久久国产视频网站| 久久伊人免费视频| 懂色av影视一区二区三区| 日本免费在线精品| 亚洲永久在线观看| 中文字幕在线看视频国产欧美在线看完整| 国产综合色香蕉精品| 亚洲自拍偷拍福利| 亚洲一区二区三区久久| 亚洲视频免费一区| 久久在线观看视频| 国产精品久久久亚洲| 亚洲一区二区久久| 欧美在线中文字幕| 精品国产91久久久| 欧美大片va欧美在线播放| 亚洲成人激情在线观看| 久久久久久久久久婷婷| 一区二区三区四区精品| 亚洲欧美国产精品| 国产精品大片wwwwww| 日韩av一区在线观看| 亚洲欧美日韩另类| 国产精品一区久久| 亚洲老司机av| 国产精品69精品一区二区三区| 亚洲夜晚福利在线观看| 久久亚洲精品一区二区| 日韩电影在线观看免费| 国产亚洲欧洲在线| 国产婷婷色综合av蜜臀av| 在线播放精品一区二区三区| 欧洲中文字幕国产精品| 欧洲成人性视频| 亚洲伊人久久大香线蕉av| 91精品中国老女人| 欧美电影免费观看电视剧大全| 77777亚洲午夜久久多人| 亚洲精品720p| 中文字幕日韩欧美| 97色在线观看| 欧美另类交人妖| 国产精品香蕉在线观看| 欧美精品成人91久久久久久久| 亚洲女在线观看| 亚洲欧美一区二区三区情侣bbw| 成人免费激情视频| 97国产精品人人爽人人做| 日本国产精品视频| 欧美日本国产在线| 伊是香蕉大人久久| 国产91在线播放精品91| 久久影院资源站| 最近免费中文字幕视频2019| 国产精品极品美女在线观看免费| 亚洲精品一区二区三区不| 日韩欧美国产一区二区| 欧美激情按摩在线| 日韩欧美主播在线| 日韩在线视频观看正片免费网站| 国产一区二区三区欧美| 亚洲香蕉av在线一区二区三区| 欧美夫妻性生活视频| 亚洲精品小视频| 在线观看视频亚洲| 久久久久久久久亚洲| 国产精品吹潮在线观看| 午夜精品久久久久久久99热浪潮| 亚洲人成电影网站色xx| 久久99久国产精品黄毛片入口| 久久久久久久成人| 成人两性免费视频| 国产一区二区三区久久精品| 欧美精品在线视频观看| 欧美丝袜美女中出在线| 国产免费一区二区三区在线观看| 欧美国产第二页| 欧美成人免费在线视频| 一区二区三区久久精品| 久久伊人精品视频| 久久精品99无色码中文字幕| 精品亚洲精品福利线在观看| 亚洲老头老太hd| 亚洲韩国日本中文字幕| 色偷偷偷综合中文字幕;dd| 97香蕉超级碰碰久久免费的优势| 一区二区在线视频播放| 色视频www在线播放国产成人| 亚洲精品小视频在线观看| 亚洲人成五月天| 在线视频一区二区| 精品免费在线视频| 欧美一性一乱一交一视频| 欧美日韩在线视频观看| 欧美极品少妇全裸体| 国产成人精品一区| 狠狠色香婷婷久久亚洲精品| 欧美黑人xxxⅹ高潮交| 国产精品自拍小视频| 亚洲欧美一区二区精品久久久| 国产成人在线一区二区| 亚洲日韩中文字幕| 国产精品久久久久久久久粉嫩av| 国产视频综合在线| 91香蕉国产在线观看| 国产欧美在线观看| 88国产精品欧美一区二区三区| 国产精品高清在线观看| 成人免费视频97| 亚洲欧美成人在线| 成人有码在线视频| 成人日韩在线电影| 久久精品视频va|