2011-11-02 11 views
7

के माध्यम से मैं अपनी ऑब्जेक्ट की सभी डेटटाइम गुणों को डिफ़ॉल्ट तिथि पर सेट करना चाहता हूं। हालांकि, अगर मैं प्रतिबिंब के माध्यम से मूल्य निर्धारित करने का प्रयास करता हूं तो मुझे अपवाद मिलता है: "ऑब्जेक्ट लक्ष्य प्रकार से मेल नहीं खाता है।"सी # ऑब्जेक्ट सेट करना डेटटाइम संपत्ति मूल्य प्रतिबिंब

private void SetDefaultValues() 
{ 
    DateTime dt = DateTime.Parse("1/1/2000", new CultureInfo("en-US", true)); 
    foreach (PropertyInfo p in this.GetType().GetProperties()) 
    { 
     if (p.PropertyType.FullName == "System.DateTime") 
     {          
      p.SetValue(dt, typeof(DateTime), null); 
     } 
    } 
} 

क्या मैं कुछ मौलिक रूप से गलत कर रहा/सोच रहा हूं?

+0

इनके बजाय प्रतिबिंब के माध्यम से इन्हें स्थापित करने का क्या कारण है? यदि आपके पास एक टन है जिसे सेट करने की आवश्यकता है, तो आप उन्हें एक सूची या शब्दकोश में डालने पर विचार कर सकते हैं। –

+0

मानक गुणों से बचने के लिए किसी भी कारण से आपकी डिफ़ॉल्ट तिथि के साथ क्लास var लौटाते हुए गेटटर? –

+0

मैंने प्रतिबिंब के आधार पर कस्टम deserialization विधि को कार्यान्वित करने के लिए एक बहु स्तरीय विरासत दुःस्वप्न में समान कार्यक्षमता करने की कोशिश की है। प्रदर्शन भयानक है! आप आंशिक कक्षाओं का उपयोग करके और कोड जनरेटर लिखने से बेहतर हैं। (मेरा $ 0.02)। –

उत्तर

9

पैरामीटर को समायोजन की आवश्यकता है; पहला लक्ष्य है - जो मुझे लगता है कि this है; दूसरा मूल्य (dt) है। अंतिम "इंडेक्सर्स" से संबंधित है - जो शायद यहां लागू नहीं होता है।

p.SetValue(this, dt, null); 
+0

यह काम करता है - इसे प्यार करो, धन्यवाद! :-) – Mike

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