簡體   English   中英

如何將object []傳遞給Activator.CreateInstance(type,params object [])

[英]How to pass object[] to Activator.CreateInstance(type, params object[])

我有一個包含空構造函數的類,並且它接受一個對象數組作為唯一參數。 就像是...

public myClass(){ return; }
public myClass(object[] aObj){ return; }

這是我使用的CreateInstance()方法調用

object[] objectArray = new object[5];

// Populate objectArray variable
Activator.CreateInstance(typeof(myClass), objectArray);

它拋出System.MissingMethodException並添加一條消息,顯示“未找到類型'myClass'上的構造函數”

我所做的一些研究總是將方法顯示為被調用

Activator.CreateInstance(typeof(myClass), arg1, arg2);

其中arg1和arg2是類型(string,int,bool)而不是通用對象。 如何僅使用對象數組作為參數列表來調用此方法?

注意:我嘗試在方法簽名中添加另一個變量。 就像是...

public myClass(object[] aObj, bool notUsed){ return; }

並且這個代碼執行得很好。 我也看過使用反射的方法,但我對這個具體案例特別感興趣。 如果方法簽名實際上與傳遞的參數匹配,為什么會引發此異常?

把它投射到object

Activator.CreateInstance(yourType, (object) yourArray);

假設你有構造函數:

class YourType {
   public YourType(int[] numbers) {
      ...
   }
}

我相信你會通過將你的數組(預期參數)嵌套為params數組的項來激活:

int[] yourArray = new int[] { 1, 2, 4 };
Activator.CreateInstance(typeof(YourType ), new object[] { yourArray });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM