ฉันต้องแปลงคุณสมบัติทั้งหมดของคลาสหนึ่งโดยใช้ Roslyn
วิธีที่แนะนำในการใช้การแปลงมากกว่าหนึ่งรายการกับแผนผังไวยากรณ์โดยไม่ทำให้การอ้างอิงนั้นไม่ถูกต้องคืออะไร
นี่คือสิ่งที่ฉันได้ลองและติดขัดอยู่:
ในการผ่านครั้งแรก ผู้สืบทอดของ
CSharpSyntaxWalker
กำลังเยี่ยมชมโหนดPropertyDeclarationSyntax
ทั้งหมด และจัดเก็บไว้ในรายการในการผ่านครั้งที่สอง
CSharpSyntaxRewriter
กำลังเปลี่ยนโหนดในขณะที่ตรวจสอบว่าแต่ละโหนดที่เยี่ยมชมมีค่าเท่ากับหนึ่งในรายการก่อนทำการแปลง
ปัญหาในความพยายามของฉันคือ: เมื่อฉันแปลงคุณสมบัติ ฉันจะเพิ่มฟิลด์ใหม่ให้กับคลาสซึ่งทำให้คลาสกลายพันธุ์ การอ้างอิงทั้งหมดในรายการไปยังคุณสมบัติอื่น ๆ จะไม่ถูกต้องในแผนผังใหม่สำหรับชั้นเรียน
ดูเหมือนว่าจะไม่มีประสิทธิภาพในการกลับมาทบทวนทั้งชั้นเรียนอีกครั้ง และไม่ว่าจะด้วยวิธีใดก็ตาม ฉันก็ตรวจไม่พบโหนดคุณสมบัติที่ได้รับการจัดการแล้วเนื่องจากความแตกต่างในการอ้างอิง