บางอย่างช่วยให้ฉันเข้าใจได้หรือไม่ว่าทำไมห้องเรียนถึงได้รับมรดกจากประเภทเดียวกัน?
มันไม่ได้ก็สืบทอดจากPage<T>
แต่T
ตัวเองเป็นข้อ จำกัด BasePage<T>
ที่จะแปรตามประเภทที่ได้รับมาจาก
เพื่อสรุปว่าทำไมคุณต้องดูว่าพารามิเตอร์ type T
นั้นถูกใช้งานจริงอย่างไร หลังจากขุดขึ้นมาในขณะที่คุณเลื่อนระดับของการสืบทอดคุณจะเข้าสู่ชั้นเรียนนี้:
( github )
public class GenericPage<T> : PageBase where T : GenericPage<T>
{
public bool IsStartPage {
get { return !ParentId.HasValue && SortOrder == 0; }
}
public GenericPage() : base() { }
public static T Create(IApi api, string typeId = null)
{
return api.Pages.Create<T>(typeId);
}
}
เท่าที่ฉันเห็นจุดประสงค์เดียวสำหรับข้อ จำกัด ทั่วไปคือเพื่อให้แน่ใจว่าCreate
วิธีการส่งกลับชนิดนามธรรมที่เป็นไปได้น้อยที่สุด
ไม่แน่ใจว่ามันคุ้มค่าหรือเปล่า แต่อาจมีเหตุผลที่ดีอยู่เบื้องหลังหรืออาจเป็นเพียงเพื่อความสะดวกสบายหรืออาจจะไม่มีเนื้อหามากเกินไปเบื้องหลังและเป็นเพียงวิธีที่ซับซ้อนเกินไปที่จะหลีกเลี่ยงนักแสดง (BTW ฉัน ไม่ได้หมายความว่าเป็นอย่างนี้ฉันแค่บอกว่าบางคนทำอย่างนั้น)
หมายเหตุว่านี้ไม่ได้ช่วยให้พวกเขาที่จะหลีกเลี่ยงการสะท้อน - The api.Pages
เป็นที่เก็บของหน้าเว็บที่ได้รับtypeof(T).Name
และผ่านมันเป็นtypeId
ไปที่contentService.Create
วิธีการ ( ดูที่นี่ )