2011-11-13 64 views
0

我有此類:傳遞字符串數組參數來調用方法

using System.Linq; 
    namespace TestNamespace { 
    public class Program { 
     public static void Main(string[] args) { 
       //does stuff 
      } 
     } 
    } 

我加載上述組件,並希望調用與一個字符串數組參數的方法。

這給了我一個空的異常:

private static object[] parameters = new object[1]; 
string[] pa = { "1", "2" }; 
parameters[0] = pa; 
//Creating target and other code 
bool retVal = (bool)target.Invoke(null, parameters); 

有什麼想法?謝謝

回答

4

哪裏的NullReferenceException。你確定你正確反映了MethodInfo,並且target不是null?這是我對這裏真正發生的事情的懷疑。如果在方法中拋出了NullReferenceException,它將被封裝在TargetInvocationException中,因此我懷疑NullReferenceException是因爲target爲空。

需要明確的是,這裏是你如何加載並調用方法:

var target = typeof(Program) 
       .GetMethod("Main", BindingFlags.Public | BindingFlags.Static); 
bool retVal = (bool)target.Invoke(null, new object[] { pa }); 

parameters參數MethodInfo.Invoke是一個object[]用相同的數量,順序和類型的方法的參數被調用。在你的情況下,你有一個類型爲string[]的單一參數。因此,object[]參數MethodInfo.Invoke應該是一個包含一個元素的數組,該元素是string[]的一個實例。這是我用上面的語法完成的。

+0

你是不是指'bool retVal =(bool)target.Invoke(null,new object [] {pa});'?你的語法給出了一個'{''System.Object []'類型的對象不能轉換爲類型'System.String []'。「} – Nick

+0

@Nick:對,對不起。 – jason