में अभिव्यक्तियों का नाम पार्सिंग मैं CSharpSyntaxWalker
में अभिव्यक्तियों के साथ कुछ करने की कोशिश कर रहा हूं, हालांकि, मैंने देखा कि एएसटी में NameOfExpressionSyntax
नहीं है। इसके बजाय मैं जो SemanticModel.GetSymbolInfo
रिटर्न कोई मिलता-जुलता प्रतीकों के लिए एक InvocationExpressionSyntax
मिलता है, और मंगलाचरण की अभिव्यक्ति एक IdentifierNameSyntax
एक पहचानकर्ता टोकन "nameof"
युक्त है।Roslyn
तो nameof
भाव पहचान करने के लिए मैं एक विशेष मामले के लिए जोड़ा है | VisitInvocationExpression
को, GetSymbolInfo
कुछ भी देता है कि क्या के लिए और नहीं करता है, तो देख, चाहे पहचानकर्ता nameof
है की तलाश में। हालांकि, यह मेरे लिए थोड़ा सा लगता है। क्या कोई बेहतर तरीका हो सकता है जो उस प्रकार के पहचान को तर्कसंगत तर्क में बदल देता है?
(पी.एस .: मैं जानता हूँ कि यह शायद पश्च संगतता कारणों के लिए इस तरह पार्स किया गया है;। बस सोच nameof
और सामान्य आमंत्रण भेद के लिए एक API है कि क्या वहाँ)
[किसी और ने यह भी देखा है] (https://joshvarty.wordpress.com/2015/02/16/lrn-quick-tips-working-with-nameof/)। – Rawling
अभी भी # 6 ग के लिए एक औपचारिक कल्पना नहीं है, लेकिन [इस मसौदा] (https://github.com/ljw1004/csharpspec/blob/f12213c4ffe77a51dbc5412250bef6af75333f32/expressions.md#nameof-expressions) पुष्टि करने के लिए कि यह एक है प्रतीत होता है संदिग्ध पार्स और इतनी अतिरिक्त तर्क की आवश्यकता है। –
@Damien_The_Unbeliever: मैं वास्तव में जहां यह निर्धारित करता है कि लेकिन रोसलिन के स्रोत कोड में जगह पाने के कोशिश की सकता है एक सरसरी खोज में नहीं। शायद मुझे फिर से देखना चाहिए। – Joey