हाँ, परावर्तन जाने का रास्ता होगा। सबसे पहले, आपको वह मिलेगा 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
ऑपरेटर का उपयोग यह निर्धारित करने में मदद करने के लिए कर सकते हैं कि आप किस आधार वर्ग / इंटरफ़ेस के साथ काम कर रहे हैं क्रम)।
हालाँकि, यदि आप इन प्रकार की परिभाषाओं को नियंत्रित नहीं करते हैं और पैटर्न मिलान के आधार पर तर्क को चलाना है, तो यह ठीक है।