मेरे पास टूलकिट है जिसमें कई विधियां अक्सर Expression<Func<T,TProperty>>
पैरामीटर के रूप में लेती हैं। कुछ केवल एकल-स्तर (o=>o.Name
) हो सकते हैं, जबकि कुछ बहु-स्तर (o=>o.EmployeeData.Address.Street
) हो सकते हैं।Roslyn एक संकलन-समय अभिव्यक्ति जांच के लिए सही उपकरण है?
मैं कुछ विकसित करना चाहता हूं (एमएसबिल्ड टास्क? विजुअल स्टूडियो प्लगइन? उम्मीद है कि पहले) जो सभी उपयोगकर्ता की .cs फ़ाइलों को पढ़ता है, और यदि दिया गया पैरामीटर संपत्ति-अभिव्यक्ति नहीं है (लेकिन o=>o.Contains("foo")
जैसा कुछ है) , या यदि एक बहु-स्तरीय अभिव्यक्ति दी जाती है जहां केवल एक-स्तर की अनुमति है।
मैं संकलित आईएल कोड में पहले देख करने की कोशिश की लेकिन जब से अभिव्यक्ति पेड़ एक सी # संकलक "चाल" कर रहे हैं, आईएल में सब मैं देख अभिव्यक्ति उदाहरणों और इस तरह बनाने है, और जब तक मैं सकता है जांच प्रत्येक अगर केवल MemberExpressions (और उनमें से सही संख्या) बनाई गई है, यह बहुत अच्छा नहीं है।
फिर रोज़लिन मेरे दिमाग में आया। क्या रोज़लिन के साथ ऐसा कुछ लिखना संभव है?
आपको इन बाधाओं को लागू करने की आवश्यकता क्यों है? –
क्योंकि इन विधियों में मैं जो सामान करता हूं (संपत्ति परिवर्तन हैंडलिंग, त्रुटि जांच आदि) केवल संपत्ति अभिव्यक्ति – TDaver
पर समझ में आता है और क्योंकि यह करने के लिए एक दिलचस्प चीज़ की तरह लग रहा है :) – TDaver