सी # में सीरियलाइज़िंग और डिस्क्रिअलाइज़िंग एक्सप्रेशन ट्री


92

क्या C # में Deserialize Expressions का एक तरीका है, मैं एक डेटाबेस में भावों को Store करना चाहूंगा और उन्हें रन टाइम पर लोड कर सकता हूं।


किस तरह के भाव? Regex?
जॉन लीमजप

16
मैं "पेड़" को देखते हुए System.Linq.Expression प्रकार के भावों को ग्रहण करूँगा।
डेविड वेंगियर

जवाबों:


48

मैंने लाइब्रेरी पर काम जारी रखा, जिसका उल्लेख सी # में सीरियलाइज़िंग और डिस्क्रिअलाइज़िंग एक्सप्रेशन ट्रीज़ द्वारा किया गया था

ऐसा लगता है कि परियोजना को छोड़ दिया गया था (2008) लेकिन मैंने इस पर कुछ काम किया और अब यह .NET 4.0 और सिल्वरलाइट के साथ काम करता है। मैंने उनके कोड में बग फिक्स किए और इसे DAL-स्वतंत्र भी बनाया।

http://expressiontree.codeplex.com/


2
एक काम कर समाधान के साथ आने के लिए +1। मैंने MSDN पर मूल लाइब्रेरी का उपयोग करने की कोशिश की और यह एक सरल बाइनरी एक्सप्रेशन नोड का वर्णन नहीं कर सका। आपका प्रोजेक्ट बहुत अच्छा काम करता है। धन्यवाद!
याकूब डेटा सॉल्यूशंस

2
क्या यह नुगेट पर परियोजना है?
मोहम्मद दयान

@ मोहम्मददयान, Microsoft अपने पैकेज प्रबंधन उपकरण पर अविवेकी और असंगत रहा है। कभी-कभी ASP.NET CORE पैकेज को Nuget के साथ स्थापित किया जा सकता है, अन्य मामलों में जैसे MongoDB ड्राइवर NuGet के माध्यम से उपलब्ध नहीं होगा। अभी भी कम से कम माइक्रोसॉफ्ट के पास एनपीएम को पैकेजों को प्रबंधित करने की अनुमति देने की अंतर्दृष्टि थी। एनपीएम
टी। वेबस्टर

@RepoMan एक समस्या को हल करने के लिए मेरे लिए बहुत अधिक मूल्य का है जब यह किसी की मदद करता है। हो सकता है कि आप उपयोग पर कुछ दस्तावेज़ीकरण में योगदान कर सकते हैं - चलो बात करते हैं ..
टी। वेबस्टर

14

अन्य विकल्प code.msdn.com पर अभिव्यक्ति ट्री सीरियलाइज़ेशन परियोजना है - यहाँ क्या आवश्यक है और अधिक प्रतीत होगा?

UPD: अब http://archive.msdn.microsoft.com/exprserialization


अभिव्यक्ति ट्री सीरियलाइज़ेशन कोड को कोड गैलरी code.msdn.microsoft.com/exprserialization से हटा दिया जाता है , किसी भी विचार को जहां इसे या बेहतर विकल्पों में ले जाया जाता है?
किरण भीमार्टी

@ किरन: क्या मतलब? कोड डाउनलोड अभी भी है; पृष्ठ के शीर्ष पर डाउनलोड टैब देखें।
रॉबर्ट हार्वे

हाँ यह अब है, शायद एक अस्थायी बात है, पेज फेंक रहा था एक परियोजना कल त्रुटि नहीं मिली जब मैंने ऊपर लिंक की कोशिश की। मैं प्रोजेक्ट देखता हूं और अब डाउनलोड करता हूं। धन्यवाद!!!
किरण भीमार्टी

13

GitHub पर एक परियोजना है / Nuget बुलाया MetaLinq कि उद्देश्य अधिक आसान अभिव्यक्ति tress के साथ काम करने के लिए।

यह सामान्य एक्सप्रेशंस और 'एडिटेबल एक्सप्रेशंस' के बीच परिवर्तित होता है, जो परस्पर और पूरी तरह से सीरियल करने योग्य होते हैं, इसलिए इसे Json, Xml, बाइनरी आदि के साथ इस्तेमाल किया जा सकता है।

अधिक जानकारी के लिए इस ब्लॉग पोस्ट को भी देखें।


12

मेरी नई लाइब्रेरी Serialize.Linq पर एक नज़र है । यह linq के भावों को json, xml और बाइनरी में क्रमबद्ध करता है।


क्या आपने इससे पहले इसका इस्तेमाल किया है? आपका अनुभव कैसा था / कोई सीमाएं नहीं मिलीं?
अलेक्जेंड्रे ब्रिसेबोइस

मैंने अपने पिछले प्रोजेक्ट में इसके समान संस्करण का उपयोग किया था। अच्छा काम करता है।
निबंध

आप कुछ ऐसा क्यों लिखेंगे जो टियर के बीच की रेखाओं को खराब कर दे? आप DAL डोमेन ऑब्जेक्ट के एक्सपोज़र को BAL में बढ़ावा दे रहे हैं ... जब तक कि आपका लाइब्रेरी किसी तरह से स्वचालित रूप से DTO (और उनके विरुद्ध क्वेरीज़) को डोमेन ऑब्जेक्ट्स / क्वेरी में कनवर्ट नहीं करता है। मुझे इस तरह के व्यवहार का संकेत देने वाले डॉक्स में कुछ भी दिखाई नहीं देता है।
एम। बैबॉक

@ M.Babcock: आप अपने भावों में क्या उपयोग करना चाहते हैं डीटीओ बनाम एंटिटीज़ लाइब्रेरी के तर्क का हिस्सा नहीं है।
11

4
@ अपने ब्लॉग / पूरी साइट पर चला गया लगता है। क्या यह स्थानांतरित हो गया है?
जॉन

3

पूर्ण में नहीं; हालाँकि, डायनामिक LINQ नमूना थोड़ा मदद कर सकता है। आप निश्चित रूप से एक स्ट्रिंग को एक अभिव्यक्ति (एक हद तक - जेनेरिक थोड़ा पेचीदा दिखते हैं) को अनुक्रमित कर सकते हैं, लेकिन कोई इनबॉक्‍स पार्सर नहीं है।


मुझे यह पता नहीं चल सकता है कि नमूने का उपयोग करके स्ट्रिंग को एक अभिव्यक्ति को कैसे वर्गीकृत किया जाए, केवल दूसरी दिशा, स्ट्रिंग के रूप में लेने और एक अभिव्यक्ति ट्री बनाने के लिए। मुझे किस विधि से कॉल करना है?
क्रिस्टोफर एडवर्ड्स

2

डब्ल्यूसीएफ आरआईए सेवाएं सीरीज़िंग के लिए अनुमति देती हैं IQuerayble<T>

WCF RIA सेवाएँ भाग 3 - डेटा अपडेट करना


मेरा मानना ​​है कि यह अधिक प्रासंगिक है: silverlightshow.net/items/…
एनरिको कैंपिडोग्लियो

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.