首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 反射技術:InvokeMember 參數詳解 (二)

     編輯:關於C語言

InvokeMember 方法簽章

public object InvokeMember(
    string name,
    BindingFlags invokeAttr,
    Binder binder,
    object target,
    object[] args
);

參數詳細說明

參數說明
name 要呼叫的建構函式、方法、屬性或欄位名稱。若為空字串 "",表示呼叫預設成員。
invokeAttr 位元遮罩,由一或多個 BindingFlags 組成,指定搜尋與呼叫行為。常用旗標包括 Public、NonPublic、Instance、Static、InvokeMethod、GetField、SetField、GetProperty、SetProperty、CreateInstance 等。若省略查找類型,預設套用 BindingFlags.Public | BindingFlags.Instance。
binder 定義一組屬性並啟用繫結的 Binder 物件,可處理多載方法選擇、參數型別強制轉換等。若為 null,使用 DefaultBinder。
target 要在其上呼叫指定成員的物件實例。靜態成員可傳 null。
args 傳遞給成員的參數陣列。

BindingFlags 分類

篩選旗標(定義搜尋包含的成員)

  • BindingFlags.Instance / Static:必須指定其中之一以取得傳回值。
  • BindingFlags.Public:包含公用成員。
  • BindingFlags.NonPublic:包含非公用成員(私有、受保護)。
  • BindingFlags.FlattenHierarchy:包含繼承階層上的靜態成員。
  • BindingFlags.DeclaredOnly:僅搜尋該型別宣告的成員,不含繼承成員。
  • BindingFlags.IgnoreCase:忽略名稱大小寫。

調用旗標(指定對成員的操作)

  • CreateInstance:呼叫建構函式,忽略 name。
  • InvokeMethod:呼叫方法(非建構函式/型別初始化)。
  • GetField / SetField:取得/設定欄位值。
  • GetProperty / SetProperty:取得/設定屬性值。

注意:調用旗標互斥,例如 InvokeMethod 不可與 SetProperty 同時使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved