日本一区二区三区久久久久久久久不_日韩精品一区二区三区三区免费_精品视频一区二区不卡_欧美剧情片在线观看_欧美日韩免费在线视频_欧美成人精品3d动漫h_欧美激情中文字幕一区二区_91色九色蝌蚪_国产做a爰片久久毛片_久久久国产午夜精品_美女视频免费一区_日韩一级免费观看_日本一区二区三区四区在线视频_亚洲三级小视频_久久男人中文字幕资源站_欧美岛国在线观看

二維碼
企資網

掃一掃關注

當前位置: 首頁 » 企資快訊 » 匯總 » 正文

C也自學——反是(Reflection)

放大字體  縮小字體 發布日期:2023-05-04 03:05:21    作者:江炫煌    瀏覽次數:161
導讀

反射是很多框架都用到得東西,是從0.25到0.5得一個進階反射專業動態創建對象,動態賦值,動態調用方法反射專業在運行時獲的類得信息每個類都有一個 type對象,構造方法對應得是 ConstructorInfo對象,方法對應得是 M

反射是很多框架都用到得東西,是從0.25到0.5得一個進階

反射專業動態創建對象,動態賦值,動態調用方法

反射專業在運行時獲的類得信息

每個類都有一個 type對象,構造方法對應得是 ConstructorInfo對象,方法對應得是 MethodInfo對象,字段對應得是 FieldInfo對象,屬性對應得是 PropertyInfo對象,使用時需要引用using System.Reflection;

Type

class Dog:Animal{ public string name; public int age; double price; static double weight; public Dog() { } public Dog(string name) { } public Dog(string name,int age) { } public override void Say() { } public double Price { get; set; } public double Weight { get; set; }}class Animal{ public virtual void Say() { }}class Print{ static void Main() { Dog dog = new Dog(); // 獲取類得 type 對象常用得三種方式 Type type = typeof(Dog); Type type1 = dog.GetType(); Type type2 = Type.GetType("Application.Dog"); //假設只知道類得名字,利用類名創建對象實例 Type t = typeof(Dog); // Activator.CreateInstance(t); 被實例化得對象必須有無參構造方法,沒有則會拋出 MissingMethodException 缺失方法異常 object dog1 = Activator.CreateInstance(t); // 相當于 new Dog();,由于返回得是 object ,所以只能用 object 接收 Console.WriteLine(dog1); Console.WriteLine(t.baseType); // 獲取父類 Console.WriteLine(t.Name); // 獲取類名 Console.WriteLine(t.FullName); // 獲取全名,包含命名空間 Console.WriteLine(t.IsAbstract); // 判斷是否為 抽象類 Console.WriteLine(t.IsArray); // 是否為 數組 Console.WriteLine(t.IsClass); // 是否為 普通類 Console.WriteLine(t.IsEnum); // 是否為 枚舉 Console.WriteLine(t.IsPublic); // 是否為 public Console.WriteLine(t.IsValueType); // 是否為 值類型 Console.WriteLine("------------gov 構造方法 gov---------------"); // 獲取無參構造方法 t.GetConstructor(new Type[0]); 參數要求是 type對象數組,因此無參構造就只需要入參長度為 0 得數組就好了 ConstructorInfo c1 = t.GetConstructor(new Type[0]); Console.WriteLine(c1); // Void .ctor ctor是IL里面構造方法得表現方式 // 獲取參數類型為 string 得構造方法 c1 = t.GetConstructor(new Type[] { typeof(string) }); Console.WriteLine(c1); // 獲取參數類型為 string,int 得構造方法 c1 = t.GetConstructor(new Type[] { typeof(string), typeof(int) }); Console.WriteLine(c1); Console.WriteLine("------------gov 字段 gov---------------"); // 獲取所有字段,必須是public,獲取得是未封裝得字段 FieldInfo[] f1 = t.GetFields(); foreach (var field in f1) { Console.WriteLine(field); } // 獲取 非public,且 非static 得字段,如果需要獲取 static得,把Instance改成static f1 = t.GetFields(BindingFlags.NonPublic | BindingFlags.Instance); foreach (var field in f1) { Console.WriteLine(field); } Console.WriteLine("------------gov 方法 gov---------------"); // 獲的所有方法 MethodInfo[] m1 = t.GetMethods(); foreach (var method in m1) { Console.WriteLine(method); } // 獲的指定方法 // 注:如果方法有重載,則拋出 AmbiguousMatchException MethodInfo m2 = t.GetMethod("Say"); Console.WriteLine("\n"+m2); // 解決方法拋出 AmbiguousMatchException異常 m2 = t.GetMethod("Say",new Type[0]); // 獲取無參方法 m2 = t.GetMethod("Say",new Type[] { typeof(string)}); // 獲取參數為 string 得方法 Console.WriteLine("------------gov 屬性 gov---------------"); // 獲的屬性,獲取到得是封裝過得屬性 PropertyInfo[] prop = t.GetProperties(); foreach (var p in prop) { Console.WriteLine(p); }}}

輸出:

Application.DogApplication.AnimalDogApplication.DogFalseFalseTrueFalseFalseFalse------------gov 構造方法gov---------------Void.ctor()Void .ctor(System.String)Void .ctor(System.String, Int32)------------gov 字段gov---------------System.String nameSystem.Int32 ageSystem.Double priceSystem.Double<Price> k__BackingFieldSystem.Double<Weight> k__BackingField------------gov 方法gov---------------Void Say()Double get_Price()Void set_Price(Double)Double get_Weight()Void set_Weight(Double)Boolean Equals(System.Object)Int32 GetHashCode()System.Type GetType()System.String ToString()Void Say()------------gov 屬性gov---------------Double PriceDouble Weight反射示例 1

class Dog{ public string name; public void Say() { Console.WriteLine("你好,"+Name); } public void Say(string name) { Console.WriteLine(#34;你好,{name}"); } public string Name { get; set; }}class Print{ // 反射示例 static void Main() { // 創建對象 Type t = typeof(Dog); object obj = Activator.CreateInstance(t); // 創建對象,調用無參構造(方法1) object obj1 = t.GetConstructor(new Type[0]).Invoke(new object[0]); // 獲的對象得無參構造,調用(方法2) // 給屬性賦值 PropertyInfo prop = t.GetProperty("Name"); // 獲的屬性 prop.SetValue(obj, "大寶"); // 賦值 // 調用方法 MethodInfo method = t.GetMethod("Say", new Type[0]); // 獲的無參方法 MethodInfo method1 = t.GetMethod("Say", new Type[] { typeof(string) }); // 獲的有參方法 method.Invoke(obj, new object[0]); // 調用無參方法 method1.Invoke(obj, new object[] { "Tom" }); // 調用有參方法并賦值 }}

輸出:

你好,大寶你好,Tom反射示例 2

class Dog{ public string name; public void Say() { Console.WriteLine("你好,"+Name); } public void Say(string name) { Console.WriteLine(#34;你好,{name}"); } public string Name { get; set; }}class Print{ static void Main() { Dog dog = new Dog(); dog.Name = "Tom"; Show(dog); } static void Show(object obj) { Type t = obj.GetType(); PropertyInfo[] prop = t.GetProperties(); foreach (var p in prop) { if (p.CanRead) { string name = p.Name; object value = p.GetValue(obj); Console.WriteLine(name+"="+value); } } }}

輸出:

Name=Tom反射示例3 (復制對象得值)(淺拷貝--僅復制對象得值,不是同一個對象)

class Dog{ public string name; public string Name { get; set; }}class Print{ static void Main() { Dog dog = new Dog(); dog.Name = "Tom"; object dog1 = Clone(dog); Console.WriteLine(object.ReferenceEquals(dog,dog1)); // 判斷是否為同一個對象 } static object Clone(object obj) { Type t = obj.GetType(); object newObject = Activator.CreateInstance(t); // 創建對象 PropertyInfo[] prop = t.GetProperties(); foreach (var p in prop) { if (p.CanRead&&p.CanWrite) { object value = p.GetValue(obj); p.SetValue(newObject, value); } } return newObject; }}

輸出:

False

 
(文/江炫煌)
免責聲明
本文僅代表作發布者:江炫煌個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發現,立即刪除,需自行承擔相應責任。涉及到版權或其他問題,請及時聯系我們刪除處理郵件:weilaitui@qq.com。
 

Copyright ? 2016 - 2025 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

粵ICP備16078936號

微信

關注
微信

微信二維碼

WAP二維碼

客服

聯系
客服

聯系客服:

在線QQ: 303377504

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號: weishitui

客服001 客服002 客服003

工作時間:

周一至周五: 09:00 - 18:00

反饋

用戶
反饋

日本一区二区三区久久久久久久久不_日韩精品一区二区三区三区免费_精品视频一区二区不卡_欧美剧情片在线观看_欧美日韩免费在线视频_欧美成人精品3d动漫h_欧美激情中文字幕一区二区_91色九色蝌蚪_国产做a爰片久久毛片_久久久国产午夜精品_美女视频免费一区_日韩一级免费观看_日本一区二区三区四区在线视频_亚洲三级小视频_久久男人中文字幕资源站_欧美岛国在线观看
亚洲午夜激情网站| 欧美特级限制片免费在线观看| 久久精品72免费观看| 午夜视频久久久久久| 亚洲美女免费视频| 亚洲网友自拍偷拍| 美女爽到高潮91| 国产一区啦啦啦在线观看| 国产99久久久久| av亚洲精华国产精华| 动漫一区二区在线| 日本不卡一区二区三区在线观看| 亚洲一区三区视频在线观看| 色94色欧美sute亚洲线路一ni| 欧美性猛交xxxx黑人交| 欧美美女一区二区在线观看| 日韩久久精品一区| 最近日韩中文字幕| 午夜视频一区二区三区| 国产一区二区在线影院| 91视频婷婷| 五月天亚洲综合小说网| 欧美乱熟臀69xxxxxx| 久久久久久久久久久久久夜| 亚洲精品精品亚洲| 精品一区二区三区免费| 91蜜桃网址入口| 神马欧美一区二区| 91麻豆精品国产91久久久资源速度 | 91久久奴性调教| 欧美成人bangbros| 亚洲美女精品一区| 国产一区二区三区| 国产精品一区二区在线观看| 亚洲色欲色欲www| 久久国产尿小便嘘嘘尿| av色综合网| 91精品办公室少妇高潮对白| 久久综合狠狠综合| 午夜在线成人av| 99综合影院在线| 亚洲精品国产精品国自产观看| 91精品国产综合久久精品app| 综合av第一页| 粉嫩在线一区二区三区视频| 欧美日韩国产免费一区二区三区 | 国产精品理伦片| 美女网站色91| 国产精品免费在线播放| 欧美视频一二三区| 成人欧美一区二区三区视频网页| 国产在线播放一区| 欧美性bbwbbwbbwhd| 26uuu亚洲综合色| 毛片av一区二区| 久久久久网址| 日韩三级在线观看| 午夜av区久久| 国产精品一区二区a| 欧美日韩精品久久久| 一区二区三区在线视频播放| 97se亚洲国产综合在线| 欧美日韩国产综合一区二区三区| 亚洲人成网站精品片在线观看| 丁香五精品蜜臀久久久久99网站 | 欧洲在线/亚洲| 亚洲男人的天堂在线观看| 成人h精品动漫一区二区三区| 中文字幕一区二区中文字幕| 亚洲日本va午夜在线电影| www.亚洲激情.com| 欧美日韩国产免费| 首页国产丝袜综合| 欧美国产综合视频| 国产精品婷婷午夜在线观看| 成人国产亚洲欧美成人综合网| 在线精品国精品国产尤物884a| 一区二区三区四区精品在线视频 | 国产精品美女www爽爽爽| 国产激情精品久久久第一区二区| 色综合中文字幕| 亚洲一区二区不卡免费| 精品无人乱码一区二区三区的优势| 欧美大尺度电影在线| 国产精品影视网| 欧美日韩在线播| 精品在线一区二区三区| 色狠狠综合天天综合综合| 久久99精品久久久久久三级| 国产网站一区二区三区| 成年人国产精品| 欧美变态凌虐bdsm| 成人综合婷婷国产精品久久蜜臀 | 欧美一区二区三区日韩视频| 久久国产欧美日韩精品| 亚洲欧洲久久| 日韩精品视频网站| 自拍视频一区二区三区| 青草av.久久免费一区| 正在播放久久| 美女网站在线免费欧美精品| 欧美性猛交xxxx黑人交 | 国产精品毛片一区视频| 国产午夜精品理论片a级大结局| 99re在线精品| 久久久蜜桃精品| 97免费资源站| 国产精品电影一区二区| 精品麻豆av| 一区二区三区日韩精品视频| 日韩免费电影一区二区三区| 三级欧美在线一区| 91久久精品国产91性色tv| 久久成人免费网站| 欧美一区二区在线看| 成人的网站免费观看| 国产欧美精品一区二区色综合 | 4438成人网| 国产成人啪午夜精品网站男同| 欧美一区二区精美| 91麻豆国产精品久久| 中文字幕一区二区在线播放| 欧美日韩免费观看一区| 丝袜诱惑亚洲看片| 欧美日本乱大交xxxxx| 成人免费毛片片v| 国产日韩欧美激情| 久久一区二区精品| 免费黄网站欧美| 日韩免费观看2025年上映的电影 | 成人永久aaa| 国产欧美日韩视频在线观看| 欧美二区三区| 美日韩一区二区三区| 欧美一区二区在线视频| 国产高清一区二区三区| 亚洲第一成人在线| 欧美精品自拍偷拍| 国产精品亚洲一区| 日韩中文字幕亚洲一区二区va在线| 7878成人国产在线观看| 国产精品亚洲综合| 奇米在线7777在线精品| 国产99一区视频免费 | 亚洲大尺度视频在线观看| 欧美日韩在线电影| 国产精品久久波多野结衣| 石原莉奈在线亚洲三区| 日韩一区二区三区视频在线观看| 国产一区视频观看| 经典三级视频一区| 欧美韩日一区二区三区四区| 色综合天天综合给合国产| 99这里只有精品| 日韩中文字幕一区二区三区| 久久久噜噜噜久久中文字幕色伊伊| 亚洲精品tv久久久久久久久| 成人av电影免费在线播放| 亚洲自拍与偷拍| 欧美成人r级一区二区三区| 婷婷四房综合激情五月| 91天堂素人约啪| 日本伊人精品一区二区三区观看方式| 久久久综合网站| 欧美亚洲高清一区| 免费av在线一区二区| 粉嫩一区二区三区在线看| 五月婷婷久久丁香| 久久精品视频网| 欧美日韩国产综合视频在线观看 | 亚洲一区二区欧美日韩| 日韩免费成人网| 一级做a爰片久久| 99re视频| 国产精品一区一区三区| 亚洲18女电影在线观看| 国产精品乱人伦| 精品第一国产综合精品aⅴ| 色综合久久中文字幕| 国产日韩欧美一区二区三区四区| 国产一区二区三区四| 污片在线观看一区二区| 亚洲欧美日韩在线| 久久久久久久久一| 91精品一区二区三区在线观看| 四虎影院一区二区三区| 99久久久无码国产精品| 国产一区二区三区精品视频| 日韩精品国产欧美| 亚洲自拍都市欧美小说| 欧美国产日产图区| 精品日产卡一卡二卡麻豆| 欧洲视频一区二区| 一级特黄录像免费播放全99| 欧美第一黄网| 久久久久久久久久久久久久一区| 91在线免费视频观看| 成人免费电影视频| 国产乱码一区二区三区| 久久 天天综合|