2010-02-21 60 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