c# - Create object instance from assembly qualified name and get property value -
मेरे पास निम्न प्रकार के कई वर्ग हैं:
नामस्थान MyCompany.MyApplication रिपोर्टिंग क्लासेस {सार्वजनिक वर्ग ReportingClassName {सार्वजनिक स्ट्रिंग HTMLReportString {get; निजी सेट;} ReportingClassName () {// रिपोर्ट उत्पन्न करने के लिए linq का उपयोग करें; // पॉप्युलेट ग्रिडव्यू, फ़ंक्शन को पास ऑब्जेक्ट जो HTMLString देता है; // सेट HTMLReportString संपत्ति; }}}
रिपोर्ट पर आधारित प्रत्येक वर्ग में एक अलग लीकक क्वेरी मौजूद है। मैं ड्रॉप डाउन बॉक्स में रिपोर्टों की सूची से गतिशील रूप से लोड करना चाहता हूं। मैं डीएसडीएल को पॉप्युलेट करने के लिए एसेबलीक्वालिफाइड नाम के साथ-साथ एक प्रदर्शनी नाम को संग्रहीत करता हूं। मैंने उन पदों के आधार पर प्रतिबिंब का उपयोग किया है जो मैंने देखे हैं, लेकिन मुझे ऐसा करना नहीं लगता जो मुझे करना चाहिए;
string myAssembly = "AssemblyName"; // यह स्थिर है; स्ट्रिंग myClass = "विधानसभा क्वालीफाइड नाम"; // डीडीएल से यह मान; Var myObject = Activator.CreateInstance (विधानसभा नाम, AssemblyQualifiedName); स्ट्रिंग propertyValue = myObject.HTMLReportString; "अपडेट पैनलिड" .इनर HTML = प्रॉपर्टी वैल्यू;
क्या मैं संभव करने की कोशिश कर रहा हूं?
में डिक्ट्रा उत्तर के अतिरिक्त (जो अच्छा है), मैं एक तिहाई समाधान का सुझाव देना चाहूंगा, जो मुझे बहुत साफ दिखता है: जैसा कि "रिपोर्टिंग क्लासनाम" आपका अपना कोड है, आप इसे एक अंतरफलक का एहसास करने के लिए संशोधित कर सकते हैं जो आपको प्रदान करता है :
नाम स्थान मेरा कंपाँनी.मेय अनुप्रयोग। रिपोर्टिंग क्लासेस {सार्वजनिक इंटरफ़ेस IReporting {string HTMLReportString {get;}} सार्वजनिक वर्ग ReportingClassName: IReporting {सार्वजनिक स्ट्रिंग HTMLReportString {get; निजी सेट;} ReportingClassName () {// रिपोर्ट उत्पन्न करने के लिए linq का उपयोग करें; // ग्रिडव्यू पॉप्युलेट करें, कार्य करने के लिए पास ऑब्जेक्ट जो HTMLString देता है; // सेट HTMLReportString संपत्ति; }}} String myAssembly = "AssemblyName"; // यह स्थिर है; स्ट्रिंग myClass = "विधानसभा क्वालीफाइड नाम"; // डीडीएल से यह मान; Var myObject = Activator.CreateInstance (विधानसभा नाम, AssemblyQualifiedName); स्ट्रिंग propertyValue = ((आईर रिपोर्टिंग) myObject) .HTMLReportString; // इंटरफ़ेस के लिए धन्यवाद, myObject HTMLReportString प्रदान करता है और इसमें प्रतिबिंब की जरूरत नहीं है, न तो "गतिशील" "अपडेट पैनलिड" .इनर HTML = प्रॉपर्टी वैल्यू;
आखिरी भाग के लिए, आप यह भी कर सकते हैं:
string propertyValue; Var myReport = myObject के रूप में IReporting अगर (myReport! = नल) {propertyValue = myReport.HTMLReportString; } और {// त्रुटि को संभाल}
बस सुरक्षित हो।
Comments
Post a Comment