में पहचानकर्ता का पता लगाएं मान लीजिए मैं एक स्रोत फ़ाइल है कि इस तरह दिखता है:सिमेंटिक मॉडल
public class FieldReference
{
int field;
public FieldReference()
{
field = 1;
}
}
मैं एक SyntaxRewriter उपयोग कर रहा हूँ इस फ़ाइल में पहचानकर्ता के सभी यात्रा करने के लिए। VisitIdentifierName विधि में, मैं यह पहचानने के लिए कि क्या एक पहचानकर्ता वर्तमान वर्ग के सदस्य को संदर्भित करता है, मैं अर्थात् मॉडल में पहचानकर्ता को देखना चाहता हूं। वहाँ SemanticModel.GetDeclaredSymbol विधि का कोई अधिभार है कि एक IdentifierNameSyntax स्वीकार करता है -
public override SyntaxNode VisitIdentifierName(IdentifierNameSyntax node)
{
SemanticModel model = this.compilation.GetSemanticModel(this.src);
// ?? look up identifier in compilation here ??
return base.VisitIdentifierName(node);
}
हालांकि मैं दूर symantic मॉडल में पहचानकर्ता को देखने के लिए नहीं मिल सकता है:
यह वही है मैं अब तक किया है ।
कोई विचार मुझे यह कैसे करना चाहिए?
धन्यवाद केविन, यह सुनिश्चित नहीं है कि मैंने इसे कैसे नजरअंदाज किया। मुझे लगता है कि मेरे लिए बस इतना नया! – Grokys
हम्म, यह Roslyn के वर्तमान पूर्वावलोकन संस्करण में टूटा हुआ लगता है। नमूने प्रोजेक्ट => ConvertToAutoPropertyCS => PropertyRewriter => VisitFieldDeclaration (FieldDeclarationSyntax फ़ील्ड) फ़ील्ड पैरामीटर के लिए प्रतीक प्राप्त करने का कोई तरीका नहीं है। – mynkow
क्योंकि एक फ़ील्ड घोषणा एक से अधिक प्रतीकों की घोषणा कर सकती है, आपको वास्तव में वेरिएबलडेक्लेरेटर सिंटैक्स का उपयोग करने की आवश्यकता है। –