2010-01-13 31 views
5

मैं किसी ऑब्जेक्ट के सार्वजनिक गुणों को पुनर्प्राप्त करने का प्रयास कर रहा हूं लेकिन यह कुछ भी वापस नहीं कर रहा है। क्या आप मुझे बता सकते हैं कि मैं क्या गलत कर रहा हूं।GetFields() कुछ भी क्यों नहीं लौटाता है?

public class AdHocCallReportViewModel : ReportViewModel 
{ 
    public string OperatorForCustEquipID { get; set; } 
    public string OperatorForPriorityID { get; set; } 
    public string OperatorForCallTypeID { get; set; } 
    public string OperatorForStatusID { get; set; } 
} 

public UpdateReportParameters(AdHocCallReportViewModel rvm) 
{ 
    var type = rvm.GetType(); 
    foreach (var f in type.GetFields().Where(f => f.IsPublic)) 
    { 
     Console.WriteLine(f.Name); 
     Console.WriteLine(f.GetValue(rvm).ToString()); 
    } 
} 

कोड के माध्यम से कदम उठाने पर, यह फ़ोरैच लूप पर छोड़ देता है क्योंकि GetFields शून्य आइटम लौटाता है।

उत्तर

23

आप नहीं मिला है सार्वजनिक क्षेत्रों कॉल करने के लिए प्रयास करना चाहिए। वे गुण हैं। तो इसके बजाय type.GetProperties() आज़माएं।

+0

मेरे उत्तर का डुप्लिकेट इसलिए एक +1 =) – Restuta

+0

यह बेईमानी से है कि लेखक ने आपका जवाब स्वीकार कर लिया, मेरा जवाब पहले दिया गया था और यह वही है। :( – Restuta

+4

यह इस तरह के छोटे प्रश्नों और उत्तरों के साथ बहुत कुछ होता है जो कभी-कभी एक दूसरे के सेकंड के भीतर जमा हो जाते हैं। बेईमानी के साथ कुछ भी नहीं करना। कभी-कभी आप बग हैं, कभी-कभी आप हवा की ढाल हैं। –

1

सभी उदाहरण फ़ील्ड प्राप्त करने के लिए BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public पास करें।

दूसरे विचार पर, मैं देख रहा हूं कि आप स्पष्ट रूप से सार्वजनिक क्षेत्रों के लिए फ़िल्टर कर रहे हैं। कक्षा में कोई सार्वजनिक क्षेत्र नहीं है। गुण जो कि संकलक द्वारा स्वचालित रूप से जेनरेट किए जाते हैं, गुणों के लिए बैकिंग स्टोर के रूप में निजी होते हैं।

+0

о_О यदि आपको सार्वजनिक संपत्तियां प्राप्त करने की आवश्यकता है, तो फ़ील्ड नहीं, तो आपने इसे क्यों लिया है? – Restuta

+0

Restuta: यदि आप सार्वजनिक * गुण * चाहते थे तो आप ऐसा नहीं करेंगे। यह स्पष्ट नहीं है कि ओपी क्या करने की कोशिश कर रहा है। चूंकि उन्होंने 'गेटफिल्ड्स' का उपयोग किया, मुझे लगता है कि वह खेतों की तलाश में था। वैसे भी, यह इंगित किया जाना चाहिए कि वस्तु * वास्तव में फ़ील्ड * है लेकिन वे निजी हैं। –

+0

लेकिन चूंकि ओपी द्वारा लागू की गई कक्षा में केवल गुण हैं, इसलिए यह मानने की अधिक संभावना है कि वह गुणों की तलाश में है, क्योंकि वह जनता की तलाश में है। –

8

आप क्षेत्रों पाने के लिए कोशिश कर रहे हैं, तो आप GetProperties()

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