2012-10-26 5 views
5

एक बुनियादी वर्ग परिभाषा को देखते हुए:प्रतिबिंब का उपयोग कर ऑब्जेक्ट इंस्टेंस की किसी संपत्ति के गति को गतिशील रूप से सेट कैसे करें?

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); 
    } 
} 

इस कोड नमूना सरल है और न गतिशील प्रकार रूपांतरण का उपयोग, मैं सिर्फ एक काम नमूना उदाहरण पर कि संपत्ति सेट करना चाहते हैं।

संपादित करें: उपरोक्त कोड में PropertyName और PropertyValue भी सरलीकृत है।

अग्रिम

+0

क्या समस्या आप अपने वर्तमान कोड के साथ प्राप्त कर सकता है: आपके मामले में करने के लिए कोड बदलने? –

+0

@CuongLe यह एक ऐसी संपत्ति का मूल्य निर्धारित करने का प्रयास कर रहा है जो 'System' टाइप प्रकार 'के उदाहरण पर' कार 'प्रकार से संबंधित है जो –

उत्तर

7

धन्यवाद पहला तर्क आप उदाहरण संपत्ति आप सेट करना चाहते हैं धारण किया जाना चाहिए गुजरती हैं। यदि यह एक स्थिर संपत्ति है जो पहले तर्क के लिए शून्य है। एक भोला-भाला प्रकार रूपांतरण के लिए

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

आप

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

यूप काम नहीं करेगा - जो एक आकर्षण की तरह काम करता है! –

संबंधित मुद्दे

 संबंधित मुद्दे