日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MethodBase.GetCurrentMethod 方法

發(fā)布時間:2025/5/22 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MethodBase.GetCurrentMethod 方法 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

如果當前正在執(zhí)行的方法定義泛型類型上MethodInfo返回GetCurrentMethod通過泛型類型定義 (即,MethodInfo.ContainsGenericParameters返回true)。?因此,它不反映時調(diào)用該方法時所使用的類型自變量。?例如,如果方法M()泛型類型上定義C<T>(C(Of T)在 Visual Basic 中),和GetCurrentMethod從調(diào)用C<string>.M(),然后GetCurrentMethod返回C<T>.M()(C(Of T).M()在 Visual Basic 中)。

如果當前正在執(zhí)行的方法是泛型方法,GetCurrentMethod返回泛型方法定義。?如果在泛型類型上定義的泛型方法MethodInfo從泛型類型定義中獲取。

示例

下面的示例定義兩種類型。?第一種是一個非泛型類,?TestClass,包括構(gòu)造函數(shù),一個名為方法GetValue,和一個名為的讀寫屬性GetValue。?第二個是名為一個泛型類TestClass<T>,包含一個構(gòu)造函數(shù),GetValue方法和泛型方法,?ConvertValue<Y>。?每個構(gòu)造函數(shù)、 方法和屬性訪問器包括對的調(diào)用GetCurrentMethod方法。

------------------------------------------------------

using System; using System.Reflection;public class Example {public static void Main(){var t = new TestClass(); Console.WriteLine(t.GetValue());t.Value = 10;Console.WriteLine(t.Value);Console.WriteLine();var tg =new Test<int>(200);Console.WriteLine(tg.GetValue());var b = tg.ConvertValue<Byte>();Console.WriteLine("{0} -> {1} ({2})", tg.GetValue().GetType().Name,b, b.GetType().Name);} } public class TestClass {private Nullable<int> _value;public TestClass(){MethodBase m = MethodBase.GetCurrentMethod();Console.WriteLine("Executing {0}.{1}", m.ReflectedType.Name, m.Name);}public TestClass(int value){MethodBase m = MethodBase.GetCurrentMethod();Console.WriteLine("Executing {0}.{1}", m.ReflectedType.Name, m.Name);_value = value;}public int Value{ get {MethodBase m = MethodBase.GetCurrentMethod();Console.WriteLine("Executing {0}.{1}", m.ReflectedType.Name, m.Name);return _value.GetValueOrDefault();}set {MethodBase m = MethodBase.GetCurrentMethod();Console.WriteLine("Executing {0}.{1}", m.ReflectedType.Name, m.Name);_value = value;}}public int GetValue(){MethodBase m = MethodBase.GetCurrentMethod();Console.WriteLine("Executing {0}.{1}", m.ReflectedType.Name, m.Name);return this.Value;} }public class Test<T> {private T value;public Test(T value){MethodBase m = MethodBase.GetCurrentMethod();Console.WriteLine("Executing {0}.{1}", m.ReflectedType.Name, m.Name);this.value = value;}public T GetValue(){MethodBase m = MethodBase.GetCurrentMethod();Console.WriteLine("Executing {0}.{1}", m.ReflectedType.Name, m.Name);return value;}public Y ConvertValue<Y>() {MethodBase m = MethodBase.GetCurrentMethod();Console.WriteLine("Executing {0}.{1}", m.ReflectedType.Name, m.Name);Console.Write(" Generic method: {0}, definition: {1}, Args: ", m.IsGenericMethod, m.IsGenericMethodDefinition);if (m.IsGenericMethod) {foreach (var arg in m.GetGenericArguments())Console.Write("{0} ", arg.Name);}Console.WriteLine();try {return (Y) Convert.ChangeType(value, typeof(Y));}catch (OverflowException) {throw; } catch (InvalidCastException) {throw;} } } // The example displays the following output: // Executing TestClass..ctor // Executing TestClass.GetValue // Executing TestClass.get_Value // 0 // Executing TestClass.set_Value // Executing TestClass.get_Value // 10 // // Executing Test`1..ctor // Executing Test`1.GetValue // 200 // Executing Test`1.ConvertValue // Generic method: True, definition: True, Args: Y // Executing Test`1.GetValue // Int32 -> 200 (Byte)

?

轉(zhuǎn)載于:https://www.cnblogs.com/herizai/p/6972201.html

總結(jié)

以上是生活随笔為你收集整理的MethodBase.GetCurrentMethod 方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。