ฉันกำลังประสบปัญหาเกี่ยวกับข้อผิดพลาดในการอ้างอิงการขึ้นต่อกันแบบวงกลมในเว็บแอป .net core แม้ว่าฉันคิดว่าฉันเข้าใจปัญหาแล้ว ฉันไม่สามารถคิดถึงวิธีแก้ไขปัญหาที่ฉันเผชิญได้ แต่ฉันได้ค้นหาไปรอบๆ แล้วและดูเหมือนจะไม่พบใครที่มีปัญหาเดียวกันอีกเลย
นี่คือโฟลว์ลอจิกที่ฉันพยายามทำให้สำเร็จ: 1. พื้นที่เก็บข้อมูลทั่วไปที่จัดการการดำเนินการ db CRUD 2. ภายในพื้นที่เก็บข้อมูลนี้มีบริการที่ทำงานบางอย่างตามประเภทของการดำเนินการฐานข้อมูลที่เกิดขึ้น
ตัวอย่างที่ 1 มีการแทรกบันทึกใหม่ลงในตารางผู้ใช้ มีงานที่ทริกเกอร์อีเมลต้อนรับถึงผู้ใช้
ตัวอย่างที่ 2 ลูกค้าเป้าหมายถูกแทรกลงในฐานข้อมูล มีงานที่สร้างงานติดตามผลสำหรับผู้ดูแลระบบ
เหตุผลที่จัดการทั้งหมดนี้ด้วยวิธีทั่วไปก็คือฉันต้องการจัดเตรียมอินเทอร์เฟซสำหรับผู้ดูแลระบบแอปเพื่อสร้าง/อัปเดตงานทริกเกอร์เหล่านี้ ดังนั้นในตัวอย่างที่ 1 เหตุใดฉันจึงไม่เพียงแค่ฮาร์ดโค้ดอีเมลถึงผู้ใช้
ฉันใช้ DI เพื่อแก้ไขปัญหาบริการต่างๆ และปัญหาที่ฉันมีมีดังนี้:
EntityFrameworkRepository ใช้ IRepository
ITriggerService ถูกฉีดเข้าไปใน EntityFrameworkRepository ข้อผิดพลาดเกิดขึ้นเนื่องจากฉันพยายามฉีดและแก้ไข IRepository ในบริการทริกเกอร์ แม้ว่าจะไม่มี templateService การฉีดนี้ก็พยายามแก้ไข IRepository ในตัวสร้างของตัวเองเช่นกัน ในตอนนี้ ฉันเพิ่งเข้ารหัส ITempalteService และ IEmailerService แต่จะมี 'บริการการดำเนินการทริกเกอร์' อื่นๆ อีกมากมายที่จะนำไปใช้ตลอดทั้งโค้ดและบริการอื่นๆ ดังนั้นฉันจึงไม่ต้องการเปลี่ยนแปลงการออกแบบสิ่งเหล่านี้จริงๆ
ฉันรับรู้ว่านี่เป็นการออกแบบที่ไม่ดีโดยอิงจากคนอื่นๆ ทั้งหมดที่ถามคำถามที่คล้ายกันและคำตอบที่พวกเขาได้รับ สิ่งที่ฉันไม่สามารถเข้าใจได้คือวิธีแก้ไข/ออกแบบโซลูชันที่ถูกต้องเพื่อให้บรรลุเป้าหมายที่ต้องการ
ยินดีรับข้อเสนอแนะทั้งหมด!