2010-07-20 10 views
5

मेरे पास एक प्रोजेक्ट है जहां कोई क्लाइंट एक्सेल फ़ाइल, सीएसवी, या टैब-डिलीमिट फ़ाइल आयात कर सकता है। यह फ़ाइल एक डेटाटेबल में लोड की गई है जिसे मैं SQLite डेटाबेस तालिका में परिवर्तित करता हूं। मैं वास्तव में दृढ़ता से टाइप की गई वस्तुओं बनाम डेटाटेबल्स के साथ काम करना पसंद करूंगा, तो क्या प्रतिबिंब का उपयोग करके दृढ़ता से टाइप की गई कक्षा में बनाए गए डेटाबेस तालिका को आसानी से परिवर्तित करने का कोई तरीका है? किकर एप्लिकेशन में आयात की गई फ़ाइल हमेशा अलग होगी, (यानि अलग-अलग कॉलम) इसलिए मैं किसी भी दृढ़ता से टाइप की गई वस्तुओं को वास्तव में हार्डकोड नहीं कर सकता, उन्हें हमेशा फ्लाई पर जेनरेट करना होगा।डेटाटेबल या डेटाबेस तालिका से कक्षा उत्पन्न करें

उत्तर

0

रयान ने पहले से ही सही सवाल पूछा है और मैं केवल यह भी सहमत हूं कि दृढ़ता से टाइप की गई कक्षा का एकमात्र लाभ डिज़ाइन या संकलन समय पर है, लेकिन रन-टाइम पर नहीं।

शायद आप अपनी SQLlite टेबल बनाने के बाद इस तालिका का उपयोग करने वाले किसी अन्य एप्लिकेशन में कुछ मजबूत प्रकार के वर्गों का निर्माण करना चाहते हैं।

उस मामले में आप शायद एक नज़र T4 - Text Template Transformation Toolkit में, ले सकता है कारण यह एक प्रश्न से बाहर मजबूत प्रकार कक्षाएं बनाने के लिए, ताकि आप आगे अनुप्रयोगों के लिए संकलन समय पर इन कक्षाओं में उपयोग कर सकते हैं सक्षम है।

लेकिन इससे पहले कि आप इसका उपयोग करना शुरू करें, आपको पता होना चाहिए कि टी 4 best kept Visual Studio secret एस में से एक है। ;-)

2

यदि आप एक संभावना थी तो आप सी # 4 की नई dynamic सुविधाओं का उपयोग कर सकते हैं। अधिक विशेष रूप से ExpandoObject Class

ExpandoObject एक वस्तु जिसके सदस्य गतिशील रूप से जोड़ा और रन टाइम पर हटाया जा सकता है प्रतिनिधित्व करता है।

आपके पास DynamicObject Class भी है।

अधिक जानकारी के लिए निम्न लिंक पर एक नज़र डालें:

Dynamic class creation

Populating and Using Dynamic Classes in C#/.NET 4.0

How do create a Dynamic class in C# 4?

4

सिद्धांत रूप में, आप Reflection.Emit की तरह कुछ का उपयोग कर एक विधानसभा बना सकते हैं, या कोड फ़ाइलों को उत्पन्न करके और कंपाइलर को इन्हें असेंबली में बनाने के लिए भी कॉल करके।

हालांकि, मुझे यकीन नहीं है कि यह कैसे उपयोगी होगा। बशर्ते कि इन तालिकाओं की स्कीमा रन-टाइम पर निर्धारित की जाती है, इन जेनरेट किए गए वर्गों का कोई भी उपयोग इन दृढ़ता से टाइप की गई संपत्तियों का उपयोग करने में सक्षम नहीं होगा जो आपने प्रतिबिंब का उपयोग किए बिना जोड़े हैं, और उस बिंदु पर आप अनिवार्य रूप से काम कर रहे हैं प्रतिबिंब के अतिरिक्त प्रदर्शन हिट के साथ कुछ कमजोर टाइप किया गया। सी # 4.0 में गतिशील प्रकार प्रदर्शन हिट को खत्म कर सकते हैं, लेकिन आप अभी भी वास्तविक लाभ के लिए बहुत जटिलता जोड़ रहे हैं।

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