2010-02-21 33 views
10

Hãy tưởng tượng tôi có lớp sau:Làm thế nào để gọi các phương pháp với ref params ra/sử dụng phản ánh

class Cow { 
    public static bool TryParse(string s, out Cow cow) { 
     ... 
    } 
} 

Có thể gọi TryParse thông qua phản ánh? Tôi biết những điều cơ bản:

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

var toParse = "..."; 

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

Đây chính là câu hỏi tôi đang định hỏi, thậm chí xuống đến tên phương pháp: D –

Trả lời

5

Bạn có thể làm một cái gì đó như thế này:

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

Xin lưu ý rằng: a) Bạn không cần một cá thể 'Cow' để gọi phương thức TryParse, bạn chỉ có thể truyền một giá trị null. b) 'Bò' được phân tích cú pháp được trả về trong inputParams [1], 'bò' trong mã ở trên không thay đổi. –

+0

Và do đó đây là câu trả lời, +1 tất cả quanh. –

Các vấn đề liên quan