2012-10-26 34 views
5

Cho một định nghĩa lớp cơ bản:Cách tự động đặt giá trị của thuộc tính của đối tượng bằng cách sử dụng phản chiếu?

using System.Reflection; 

public class Car() 
{ 
    public int speed {get;set;} 

    public void setSpeed() 
    { 
     Type type = this.GetType(); 
     PropertyInfo property = type.GetProperty(PropertyName); 
     property.SetValue(type, Convert.ToInt32(PropertyValue), null); 
    } 
} 

mẫu mã này được đơn giản hóa và không sử dụng chuyển đổi loại hình năng động, tôi chỉ muốn có một mẫu làm việc để thiết lập rằng tài sản trên các ví dụ.

Chỉnh sửa: PropertyName và PropertyValue ở mã trên cũng được đơn giản hóa.

Cảm ơn trước

+0

vấn đề gì bạn nhận được với mã hiện tại của bạn? –

+0

@CuongLe nó đang cố gắng thiết lập giá trị của một thuộc tính thuộc loại 'Xe' trên một thể hiện kiểu' System.Type' sẽ không hoạt động –

Trả lời

7

Đối số đầu tiên bạn vượt qua phải là trường hợp giữ thuộc tính bạn muốn đặt. Nếu đó là một thuộc tính tĩnh truyền null cho đối số đầu tiên. Trong trường hợp bạn thay đổi mã để:

public void setSpeed() 
    { 
     Type type = this.GetType(); 
     PropertyInfo property = type.GetProperty(PropertyName); 
     property.SetValue(this, Convert.ToInt32(PropertyValue), null); 
    } 

cho một chuyển đổi loại ngây thơ bạn có thể làm

var value = Convert.ChangeType(PropertyValue,property.PropertyType); 
    property.SetValue(this, value, null); 
+0

Yup - nó hoạt động như một sự quyến rũ! –

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