11
ฉันจะใช้ส่วนต่อประสานเป็นข้อ จำกัด ประเภท C # ทั่วไปได้อย่างไร
มีวิธีรับฟังก์ชั่นการประกาศต่อไปนี้หรือไม่? public bool Foo<T>() where T : interface; กล่าวคือ โดยที่ T เป็นประเภทอินเตอร์เฟส (คล้ายกับwhere T : classและstruct) ขณะนี้ฉันได้ตัดสิน: public bool Foo<T>() where T : IBase; ที่ IBase ถูกกำหนดให้เป็นอินเตอร์เฟสว่างที่สืบทอดโดยอินเตอร์เฟสแบบกำหนดเองทั้งหมดของฉัน ... ไม่เหมาะ แต่ควรใช้งานได้ ... ทำไมคุณไม่สามารถกำหนดประเภททั่วไปต้องเป็นส่วนติดต่อได้ สำหรับสิ่งที่คุ้มค่าฉันต้องการสิ่งนี้เพราะFooทำสิ่งที่ต้องการอินเทอร์เฟซชนิด ... ฉันสามารถส่งมันเป็นพารามิเตอร์ปกติและทำการตรวจสอบที่จำเป็นในฟังก์ชั่นของตัวเอง สมมติว่ามีประสิทธิภาพมากกว่านี้เล็กน้อยเนื่องจากการตรวจสอบทั้งหมดเสร็จสิ้นในเวลารวบรวม)