2009-07-01 29 views
6

Tôi có một lớp học với một giá trị bất động sản như thế này:Cách sử dụng MethodInfo.Invoke để đặt giá trị thuộc tính?

public class MyClass { 
    public property var Value { get; set; } 
    .... 
} 

Tôi muốn sử dụng MethodInfo.Invoke() để thiết lập giá trị bất động sản. Dưới đây là một số mã:

object o; 
// use CodeDom to get instance of a dynamically built MyClass to o, codes omitted 
Type type = o.GetType(); 
MethodInfo mi = type.GetProperty("Value"); 
mi.Invoke(o, new object[] {23}); // Set Value to 23? 

Tôi không thể truy cập công việc của mình ngay bây giờ. Câu hỏi của tôi là làm thế nào để thiết lập giá trị với một giá trị số nguyên như 23?

+0

Sử dụng PropertyInfo.SetValue, như đã đề cập dưới đây. Nếu bạn đã từng thấy rằng bạn bị ràng buộc khi sử dụng một đối tượng MethodInfo, hãy lấy phương thức "get" của thuộc tính (PropertyInfo.GetGetMethod()), và gọi nó như trên. –

Trả lời

13

Bạn có thể sử dụng phương thức PropertyInfo.SetValue.

object o; 
//... 
Type type = o.GetType(); 
PropertyInfo pi = type.GetProperty("Value"); 
pi.SetValue(o, 23, null); 
+0

thực sự nó phải là: pi.SetValue (o, 23, null); ? không 0 –

+0

Đúng, lỗi chính tả ... – CMS

0

Bạn có thể làm điều đó bằng cách sử dụng PropertyInfo lớp học từ không gian tên System.Reflection.

2

Nếu bạn đang sử dụng .NET Framework 4.6 và 4.5, bạn cũng có thể sử dụng PropertyInfo.SetMethod Property:

object o; 
//... 
Type type = o.GetType(); 
PropertyInfo pi = type.GetProperty("Value"); 
pi.SetMethod.Invoke(o, new object[] {23}); 
Các vấn đề liên quan