2010-05-11 11 views
6

है, तो मैं एक्सएमएल में ऑब्जेक्ट मॉडल को सहेज रहा हूं लेकिन जब मैं इसे वापस लोड करता हूं तो मुझे PropertyInfo.SetValue() का उपयोग करने का प्रयास करते समय अपवाद मिलते हैं क्योंकि संपत्ति में एक सेटटर नहीं है बस एक गेटर।अगर किसी विशेषता में कोई सार्वजनिक सेटर

मैं या तो उन संपत्तियों को सहेजना नहीं चाहता हूं जिनके पास केवल गेटर्स हैं या लोड पर पता लगाना है कि क्या यह मेरे लिए मान्य है या कोई मूल्य निर्धारित करने के लिए मान्य है या नहीं।

किसी जानते हैं कि यह

चीयर्स

उत्तर

10

आप PropertyInfo.GetSetMethod उपयोग कर सकते हैं कैसे करना है - इस null वापस आ जाएगी, तो या तो संपत्ति केवल पढ़ने के लिए या सेटर गैर सरकारी है।

if (property.GetSetMethod() != null) 
{ 
    // Yup, you can write to it. 
} 

आप एक गैर सरकारी सेटर के साथ सामना कर सकते हैं, तो आप उपयोग कर सकते हैं:

if (property.GetSetMethod(true) != null) 
{ 
    // Yup, there's a setter - but it may be private 
} 
+1

आप सामान की एक अवांछनीय राशि जानते हैं। धन्यवाद – DrLazer

2

उपयोग PropertyInfo.CanWrite संपत्ति।

+2

एफवाईआई, यह गैर-सार्वजनिक सेटर्स के लिए भी सच होगा। –

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