क्या कुछ मुझे यह समझने में मदद कर सकते हैं कि वर्ग एक ही प्रकार के आधार से क्यों विरासत में मिला है?
यह नहीं है, यह विरासत में मिला है Page<T>
, लेकिन T
खुद को एक प्रकार से पैरामीटर किए जाने के लिए विवश है जो इससे प्राप्त होता है BasePage<T>
।
यह जानने के लिए कि आपको यह देखना है कि T
वास्तव में टाइप पैरामीटर का उपयोग कैसे किया जाता है। कुछ खुदाई के बाद, जैसा कि आप वंशानुक्रम श्रृंखला को आगे बढ़ाते हैं, आप इस वर्ग पर आएंगे:
( गीथूब )
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
विधि कम से कम अमूर्त प्रकार को वापस लौटाए।
यकीन नहीं है कि अगर यह इसके लायक है, हालांकि, लेकिन शायद इसके पीछे कुछ अच्छा कारण है, या यह केवल सुविधा के लिए हो सकता है, या शायद इसके पीछे कोई बहुत अधिक पदार्थ नहीं है और यह सिर्फ एक डाली (बीटीडब्ल्यू, आई) से बचने का एक शानदार तरीका है मैं यह नहीं कह रहा हूँ कि यहाँ मामला है, मैं सिर्फ यह कह रहा हूँ कि लोग कभी-कभी ऐसा करते हैं)।
ध्यान दें कि यह उन्हें प्रतिबिंब से बचने की अनुमति नहीं देता है - उन api.Pages
पृष्ठों का भंडार है जो प्राप्त करता है typeof(T).Name
, और इसे विधि के रूप में typeId
पास करता contentService.Create
है ( यहां देखें )।