ฉันมีรหัสบางอย่างที่เกือบจะเหมือนกัน แต่ใช้ประเภทที่แตกต่างกันอย่างสิ้นเชิงโดยไม่มีการสืบทอดระหว่างตัวแปรหลัก โดยเฉพาะฉันเขียนวิเคราะห์ด้วย Roslyn สำหรับ C # และ VB.NET ด้วยประเภทต่อไปนี้:
Microsoft.CodeAnalysis.CSharp.Syntax.AttributeSyntax Microsoft.CodeAnalysis.VisualBasic.Syntax.AttributeSyntax
ฉันสงสัยว่าเนื่องจากรหัสกำลังทำสิ่งเดียวกันฉันควรเก็บไว้เป็น DRY เท่าที่จะทำได้โดยแยกออกน้อยที่สุดเท่าที่จะทำได้เป็นวิธีแยกต่างหาก (แต่เหมือนกันนอกเหนือจากชนิด) หรือแยกออกจากกันอย่างสิ้นเชิงเพราะทั้งสองวิธี การเปลี่ยนแปลงที่ไม่เกี่ยวข้องและในอนาคตอาจบังคับให้รุ่นหนึ่งเปลี่ยนแปลง แต่ไม่ใช่รุ่นอื่น ๆ (แม้ว่าจะไม่น่าเป็นไปได้)
แก้ไข:หนึ่งปีหรือหลังจากนั้นฉันก็ตีปัญหาเดียวกันนี้และทีม Roslyn ช่วยฉันแก้ปัญหา: เขียนคลาสพื้นฐานที่ใช้ชื่อสามัญและมีTAttributeSyntax
พารามิเตอร์ที่ใช้งานได้เกือบทั้งหมด จากนั้นให้เขียนคลาสที่ได้รับมาพร้อมกับข้อมูลขั้นต่ำสุดที่จำเป็นต้องใช้ประเภทเฉพาะ