2012-01-31 10 views
16

इम एक PropertyInfo[] से मूल्य प्राप्त करने की कोशिश, लेकिन मैं यह काम करने के लिए प्राप्त नहीं कर सकते:हो जाओ PropertyInfo मूल्य

foreach (var propertyInfo in foo.GetType().GetProperties()) 
{ 
     var value = propertyInfo.GetValue(this, null); 
} 

अपवाद: Object does not match target type.

क्या यह कैसे अपनी किया होना चाहिए?

+0

'यह' और' foo' किस प्रकार हैं? – BNL

+0

क्या ''' में' propertyInfo' द्वारा प्रतिनिधित्व की गई संपत्ति है? –

उत्तर

29

आप this से गुण प्राप्त करने का प्रयास कर रहे हैं जब आपने मूल रूप से से foo.GetType() से प्राप्त किया था। तो यह अधिक उचित होगा:

var value = propertyInfo.GetValue(foo, null); 

है कि आप यह सोचते हैं है प्रभावी रूप से foo.SomeProperty आदि

+1

@ जोहान: नहीं, यह संदर्भ के संदर्भ में जो भी वस्तु है, उतना ही सामान्य है ... 'propertyInfo' लूप में प्रत्येक' propertyInfo' को संदर्भित करता है। –

7

आप क्योंकि thisfoo रूप में एक ही प्रकार नहीं है कि अपवाद हो रही है प्राप्त करना चाहते हैं।

आपको यह सुनिश्चित करना चाहिए कि आप उसी वस्तु के लिए गुण प्राप्त कर रहे हैं जिसे आप मूल्य प्राप्त करने का प्रयास कर रहे हैं। मैं अपने कोड है कि आप इस पाश के दायरे के अंदर foo (इस स्थिति बिल्कुल नहीं है) होने के लिए उम्मीद कर रहे हैं से अनुमान लगा रहा हूँ, ताकि आप के लिए अपमानजनक लाइन को बदलने की जरूरत:

var value = propertyInfo.GetValue(foo, null); 
4

आप foo के प्रकार में घोषित गुणों को संसाधित कर रहे हैं, लेकिन this से अपने मान पढ़ने की कोशिश करें, जो स्पष्ट रूप से एक ही प्रकार का नहीं है।

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