ซอฟต์แวร์ของเรามีหลายคลาสที่ควรพบแบบไดนามิกผ่านการสะท้อนกลับ คลาสทั้งหมดมีคอนสตรัคเตอร์ที่มีลายเซ็นเฉพาะซึ่งรหัสการสะท้อนจะทำให้วัตถุเป็นอินสแตนซ์
อย่างไรก็ตามเมื่อมีคนตรวจสอบว่ามีการอ้างอิงวิธีการนั้นหรือไม่ (เช่นผ่าน Visual Studio Code Lens) การอ้างอิงผ่านการสะท้อนกลับจะไม่ถูกนับ ผู้คนสามารถพลาดการอ้างอิงและลบ (หรือเปลี่ยน) วิธีที่ไม่ได้ใช้อย่างเห็นได้ชัด
เราควรทำเครื่องหมาย / วิธีการเอกสารที่ต้องการเรียกผ่านการสะท้อนอย่างไร
เป็นการดีที่ควรทำเครื่องหมายวิธีในลักษณะที่ทั้งเพื่อนร่วมงานและ Visual Studio / Roslyn และเครื่องมืออัตโนมัติอื่น ๆ 'ดู' ว่าวิธีการมีวัตถุประสงค์ที่จะเรียกว่าผ่านการสะท้อน
ฉันรู้ว่ามีสองตัวเลือกที่เราสามารถใช้ได้ แต่ทั้งคู่ไม่ค่อยพอใจ เนื่องจาก Visual Studio ไม่พบการอ้างอิง:
- ใช้แอตทริบิวต์ที่กำหนดเองและทำเครื่องหมายตัวสร้างด้วยคุณลักษณะนี้
- ปัญหาคือคุณสมบัติของแอททริบิวไม่สามารถเป็นการอ้างอิงเมธอดได้ดังนั้นตัวสร้างจะยังคงแสดงว่ามีการอ้างอิง 0 รายการ
- เพื่อนร่วมงานที่ไม่คุ้นเคยกับแอตทริบิวต์ที่กำหนดเองอาจจะเพิกเฉย
- ข้อดีของวิธีการปัจจุบันของฉันคือส่วนการสะท้อนสามารถใช้คุณลักษณะเพื่อค้นหาตัวสร้างที่ควรเรียกใช้
- ใช้ความคิดเห็นเพื่อจัดทำเอกสารว่าเมธอด / คอนสตรัคเตอร์ตั้งใจที่จะเรียกผ่านการสะท้อนกลับ
- เครื่องมืออัตโนมัติไม่สนใจความคิดเห็น (และเพื่อนร่วมงานก็ทำได้เช่นกัน)
- ความคิดเห็นเกี่ยวกับเอกสาร XMLสามารถนำมาใช้เพื่อให้ Visual Studio นับการอ้างอิงเพิ่มเติมถึงวิธีการ / คอนสตรัคเตอร์:
อนุญาตให้MyPlugin
คลาสที่ตัวสร้างเรียกใช้ผ่านการสะท้อนกลับ สมมติว่าโค้ดการสะท้อนที่กล่าวอ้างค้นหาคอนสตรัคเตอร์ที่รับint
พารามิเตอร์ เอกสารประกอบต่อไปนี้ทำให้เลนส์รหัสแสดงคอนสตรัคเตอร์ที่มีการอ้างอิง 1 รายการ:
/// <see cref="MyPlugin.MyPlugin(int)"/> is invoked via reflection
มีตัวเลือกไหนดีกว่ากัน?
แนวปฏิบัติที่ดีที่สุดสำหรับการทำเครื่องหมายวิธี / คอนสตรัคเตอร์ที่ตั้งใจจะเรียกผ่านการสะท้อนคืออะไร