2010-02-21 61 views
10

想象一下,我有以下類調用與REF/OUT參數,方法是什麼?我知道的基本知識:如何使用反射

var type = typeof(Cow); 
var tryParse = type.GetMethod("TryParse"); 

var toParse = "..."; 

var result = (bool)tryParse.Invoke(null, /* what are the args? */); 
+0

這正是我要問,甚至下降到方法名的問題:d – 2013-10-18 12:15:06

回答

5

你可以做這樣的事情:

static void Main(string[] args) 
{ 
    var method = typeof (Cow).GetMethod("TryParse"); 
    var cow = new Cow();   
    var inputParams = new object[] {"cow string", cow}; 
    method.Invoke(null, inputParams); 
} 

class Cow 
{ 
    public static bool TryParse(string s, out Cow cow) 
    { 
     cow = null; 
     Console.WriteLine("TryParse is called!"); 
     return false; 
    } 
} 
+6

請注意:一)你不需要一個'牛'實例來調用TryParse方法,你可以傳遞一個null值。 b)解析的'牛'在inputParams [1]中返回,上面代碼中的'牛'保持不變。 – 2010-02-21 12:28:35

+0

因此,這就是答案,全方位+1。 – 2013-10-18 12:15:38