ConstructorInfo.Invoke 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
會喚起本實例所反映的構造子。
多載
| 名稱 | Description |
|---|---|
| Invoke(Object[]) |
呼叫由實例反映的建構子,該實例包含指定參數,並提供不常用參數的預設值。 |
| Invoke(BindingFlags, Binder, Object[], CultureInfo) |
當在導出類別中實作時,會以指定的參數調用所反映 |
Invoke(Object[])
呼叫由實例反映的建構子,該實例包含指定參數,並提供不常用參數的預設值。
public:
virtual System::Object ^ Invoke(cli::array <System::Object ^> ^ parameters);
public:
System::Object ^ Invoke(cli::array <System::Object ^> ^ parameters);
public virtual object Invoke(object[] parameters);
public object Invoke(object?[]? parameters);
public object Invoke(object[] parameters);
override this.Invoke : obj[] -> obj
Public Overridable Function Invoke (parameters As Object()) As Object
Public Function Invoke (parameters As Object()) As Object
參數
- parameters
- Object[]
一個與該建構子參數的數量、順序及類型相符的數值陣列(在預設綁定器的限制下)。 若此建構器不接受參數,則使用元素為零的陣列或 null,如 Object[] parameters = new Object[0]。 這個陣列中任何未明確初始化值的物件,都會包含該物件類型的預設值。 對於參考型元素,此值為 null。 對於值型元素,這個值會根據特定元素類型而定,分別是0、0.0或 false。
傳回
與建構子相關聯的類別實例。
例外狀況
構造子是私有或受保護的,而呼叫者則 MemberAccess缺乏。
陣 parameters 列中不包含與此建構子接受的類型相符的值。
被調用的建構子會拋出例外。
傳遞的參數數量錯誤。
來電者沒有必要的代碼存取權限。
備註
陣列中 parameters 元素的數量、類型與順序應與本實例所反映的建構子參數數量、類型及順序相同。 在呼叫建構子之前,先 Invoke 確保呼叫者擁有存取權限並驗證參數有效。
完全信任的程式碼會忽略存取限制。 也就是說,只要程式碼完全信任,私有建構子、方法、欄位和屬性都可以透過反射來存取和調用。
Note
若要建立一個沒有實例建構子的值型別實例,請使用該 CreateInstance 方法。
此方法為以下超載版本提供便利,使用預設值。 此方法無法被覆蓋。
Note
若呼叫者已獲得ReflectionPermissionReflectionPermissionFlag.RestrictedMemberAccess該旗標,且非公開成員的授權集限制於呼叫者的授權集或其子集,此方法可用來存取非公開成員。 (詳見 安全考量以資反思。)
適用於
Invoke(BindingFlags, Binder, Object[], CultureInfo)
當在導出類別中實作時,會以指定的參數調用所反映 ConstructorInfo 的建構子,並受指定 Binder限制。
public:
abstract System::Object ^ Invoke(System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, cli::array <System::Object ^> ^ parameters, System::Globalization::CultureInfo ^ culture);
public abstract object Invoke(System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, object?[]? parameters, System.Globalization.CultureInfo? culture);
public abstract object Invoke(System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, object[] parameters, System.Globalization.CultureInfo culture);
override this.Invoke : System.Reflection.BindingFlags * System.Reflection.Binder * obj[] * System.Globalization.CultureInfo -> obj
Public MustOverride Function Invoke (invokeAttr As BindingFlags, binder As Binder, parameters As Object(), culture As CultureInfo) As Object
參數
- invokeAttr
- BindingFlags
BindingFlags其中一個值是用來指定綁定類型的。
- binder
- Binder
定義 Binder 一組屬性,並使參數類型能被綁定、強制使用,以及透過反射調用成員。 若 binder , null則 Binder.DefaultBinding 使用 。
- parameters
- Object[]
一個型別 Object 為的陣列,用來匹配此建構子參數的數量、順序與類型,條件為 binder。 如果這個建構子不需要參數,則傳遞一個元素為零的陣列,如 Object[] 參數 = new Object[0]。 這個陣列中任何未明確初始化值的物件,都會包含該物件類型的預設值。 對於參考型元素,此值為 null。 對於值型元素,這個值會根據特定元素類型而定,分別是0、0.0或 false。
- culture
- CultureInfo
A CultureInfo 用來管理類型的強制。 如果是 null, CultureInfo 則使用當前執行緒的 。
傳回
與建構子相關聯的類別實例。
例外狀況
陣 parameters 列中不包含與此建構子在約束 binder條件下接受的類型相符的值。
被調用的建構子會拋出例外。
傳遞的參數數量錯誤。
來電者沒有必要的程式碼存取權限。
構造子是私有或受保護的,而呼叫者則 MemberAccess缺乏。
備註
陣列中 parameters 元素的數量、類型與順序應與本實例所反映的建構子參數數量、類型及順序相同。
在呼叫建構子之前,請 Invoke 確保呼叫者擁有存取權限,且參數的數量、順序與類型皆正確。
完全信任的程式碼會忽略存取限制。 也就是說,只要程式碼完全信任,私有建構子、方法、欄位和屬性都可以透過反射來存取和調用。
Note
若要建立一個沒有實例建構子的值型別實例,請使用該 CreateInstance 方法。
Note
若呼叫者已獲得ReflectionPermissionReflectionPermissionFlag.RestrictedMemberAccess該旗標,且非公開成員的授權集限制於呼叫者的授權集或其子集,此方法可用來存取非公開成員。 (參見 安全考量 以促進反思)要使用此功能,您的應用程式應針對 .NET Framework 3.5 或更新版本。