हाँ, परावर्तन जाने का रास्ता होगा। सबसे पहले, आपको वह मिलेगा Typeजो सूची में उदाहरण के प्रकार (रनटाइम पर) का प्रतिनिधित्व करता है। आप GetTypeविधि कोObject कॉल करके ऐसा कर सकते हैं । क्योंकि यह Objectवर्ग पर है, यह .NET में प्रत्येक ऑब्जेक्ट द्वारा कॉल करने योग्य है , क्योंकि सभी प्रकार से प्राप्त होते हैं Object( अच्छी तरह से, तकनीकी रूप से, सब कुछ नहीं , लेकिन यहां महत्वपूर्ण नहीं है)।
एक बार आपके पास Typeउदाहरण होने के बाद, आप उन इंस्टेंस को प्राप्त करने के लिए GetPropertiesविधि को कॉल कर सकते हैं PropertyInfoजो गुणों पर रन-टाइम जानकारी का प्रतिनिधित्व करते हैं Type।
ध्यान दें, आप ओवरलोड का उपयोग करके GetPropertiesवर्गीकृत करने में मदद कर सकते हैं कि आप कौन से गुण प्राप्त करते हैं।
वहाँ से, आप बस एक फ़ाइल को जानकारी लिखेंगे।
ऊपर दिया गया आपका कोड, अनुवादित, होगा:
// The instance, it can be of any type.
object o = <some object>;
// Get the type.
Type type = o.GetType();
// Get all public instance properties.
// Use the override if you want to classify
// which properties to return.
foreach (PropertyInfo info in type.GetProperties())
{
// Do something with the property info.
DoSomething(info);
}
ध्यान दें कि यदि आप विधि जानकारी या क्षेत्र की जानकारी चाहते हैं, तो आपको क्रमशः GetMethodsया ओवरलोड के GetFieldsतरीकों में से एक को कॉल करना होगा ।
यह भी ध्यान दें, सदस्यों को एक फ़ाइल में सूचीबद्ध करना एक बात है, लेकिन आपको संपत्ति सेट के आधार पर तर्क ड्राइव करने के लिए इस जानकारी का उपयोग नहीं करना चाहिए ।
यह मानते हुए कि आपके पास प्रकारों के कार्यान्वयन पर नियंत्रण है, आपको एक सामान्य आधार वर्ग से प्राप्त करना चाहिए या एक सामान्य इंटरफ़ेस लागू करना चाहिए और उन पर कॉल करना चाहिए (आप asया isऑपरेटर का उपयोग यह निर्धारित करने में मदद करने के लिए कर सकते हैं कि आप किस आधार वर्ग / इंटरफ़ेस के साथ काम कर रहे हैं क्रम)।
हालाँकि, यदि आप इन प्रकार की परिभाषाओं को नियंत्रित नहीं करते हैं और पैटर्न मिलान के आधार पर तर्क को चलाना है, तो यह ठीक है।