c#之System.Reflection.MethodBase
關於此類的官方連結:
測試程式碼如下:
實施
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace testconstructinternal
{
public class Class1
{
public int name=3;
public void Print(int vname)
{
name = vname;
Console.WriteLine(Convert.ToString(name));
//獲取當前正在執行方法的名稱(透過反射),必須要寫在正在執行方法的程式碼塊中,而不是其它的程式碼塊
Console.WriteLine(MethodBase.GetCurrentMethod().Name);//獲取當前正在執行方法的名稱
//getparameters獲取當在執行方法的引數的相關資訊
ParameterInfo[] pi=MethodBase.GetCurrentMethod().GetParameters();
//i表示parameterinfo陣列中可能會儲存多個方法引數,每個方法引數會有多個不同的屬性,故用陣列及length迴圈
for (int i = 0; i < pi.Length; i++)
{
Console.WriteLine(pi.GetType().Name);//方法引數的型別
Console.WriteLine( pi.GetValue(i).ToString());//方法引數的名稱
}
Console.ReadKey();
//AppDomain.CurrentDomain.BaseDirectory.
}
}
}
呼叫程式碼
using System;
using System.Reflection;//反射
using testconstructinternal;
public class FieldInfoClass
{
public int myField1 = 0;
protected string myField2 = null;//保護成員,class and subclass can access
public static void Gx()
{
;
}
public static void Main() //static main method
{
//學習system.reflection.methodbase類的用法
//methodbase 用於獲取方法及建構函式的資訊
Class1 c1 = new Class1();
c1.Print(34);
}
}
小結:反射很複雜,要努力學習,以適應工作
測試程式碼如下:
實施
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
namespace testconstructinternal
{
public class Class1
{
public int name=3;
public void Print(int vname)
{
name = vname;
Console.WriteLine(Convert.ToString(name));
//獲取當前正在執行方法的名稱(透過反射),必須要寫在正在執行方法的程式碼塊中,而不是其它的程式碼塊
Console.WriteLine(MethodBase.GetCurrentMethod().Name);//獲取當前正在執行方法的名稱
//getparameters獲取當在執行方法的引數的相關資訊
ParameterInfo[] pi=MethodBase.GetCurrentMethod().GetParameters();
//i表示parameterinfo陣列中可能會儲存多個方法引數,每個方法引數會有多個不同的屬性,故用陣列及length迴圈
for (int i = 0; i < pi.Length; i++)
{
Console.WriteLine(pi.GetType().Name);//方法引數的型別
Console.WriteLine( pi.GetValue(i).ToString());//方法引數的名稱
}
Console.ReadKey();
//AppDomain.CurrentDomain.BaseDirectory.
}
}
}
呼叫程式碼
using System;
using System.Reflection;//反射
using testconstructinternal;
public class FieldInfoClass
{
public int myField1 = 0;
protected string myField2 = null;//保護成員,class and subclass can access
public static void Gx()
{
;
}
public static void Main() //static main method
{
//學習system.reflection.methodbase類的用法
//methodbase 用於獲取方法及建構函式的資訊
Class1 c1 = new Class1();
c1.Print(34);
}
}
小結:反射很複雜,要努力學習,以適應工作
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-718489/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- C#之Equals與==C#
- C#之快取C#快取
- C#之變數C#變數
- C# 之 Linq to XmlC#XML
- C#基礎之介面(6)C#
- C# 之 static的用法詳解C#
- C#設計模式之命令模式C#設計模式
- C#基礎之委託,事件C#事件
- C#之使用CefSharp建立客戶端C#客戶端
- C#設計模式之單例模式C#設計模式單例
- C#設計模式之享元模式C#設計模式
- C#設計模式之狀態模式C#設計模式
- C#設計模式之組合模式C#設計模式
- C#設計模式之迭代器模式C#設計模式
- 溫故之C# using注意事項C#
- C#之txt的資料寫入C#
- C#黔驢技巧之去重(Distinct)C#
- [C# Expression] 之動態建立表示式C#Express
- C#之簡易猜數字遊戲C#遊戲
- C#設計模式之職責鏈模式C#設計模式
- C#設計模式之訪問者模式C#設計模式
- C#設計模式之介面卡模式C#設計模式
- C# 9.0 新特性之模式匹配簡化C#模式
- C#進階之全面解析Lambda表示式C#
- C#基礎之結構體講解C#結構體
- C#基礎之checked與 unchecked的使用C#
- C#與.NET入門之C# 8.0和.NET Core 3.0高階程式設計C#程式設計
- C#機房重構之註冊窗體C#
- C#控制元件之Repeater控制元件使用C#控制元件
- C# 9.0 新特性之 Lambda 棄元引數C#
- [04] C# Alloc Free程式設計之實踐C#程式設計
- 深入xLua實現原理之Lua如何呼叫C#C#
- 深入xLua實現原理之C#如何呼叫LuaC#
- C#設計模式之訂閱釋出模式C#設計模式
- 【記】《.net之美》之讀書筆記(一) C#語言基礎筆記C#
- 【記】《.net之美》之讀書筆記(二) C#中的泛型筆記C#泛型
- 深入瞭解C#(TPL)之Parallel.ForEach非同步C#Parallel非同步
- P/Invoke之C#呼叫動態連結庫DLLC#
- 《C# 8.0和.NET Core 3.0高階程式設計(第4版)》之“C# 與 .NET 入門 ”C#程式設計