के साथ जेनेरिक मुझे दो सामान्य आधार वर्ग हैं। दूसरी जेनेरिक कक्षा में प्रथम श्रेणी के अपने पैरामीटर पर बाधा है।जेनेरिक पैरामीटर्स और सार कक्षा
abstract class FirstClass<T> {...}
abstract class SecondClass<U> where U : FirstClass {...}
यह काम नहीं करता है, क्योंकि फर्स्ट क्लास परिभाषित नहीं किया गया है। तो मुझे यह करने की ज़रूरत है।
abstract class FirstClass<T> {...}
abstract class SecondClass<U, T> where U : FirstClass<T> {...}
जो काम करता है। हालांकि, यह इन अमूर्त वर्गों को बदसूरत बना देता है।
class SomeClass {...}
class MyFirstClass : FirstClass<SomeClass> {...}
class MySecondClass : SecondClass<MyFirstClass, SomeClass> {...}
यह मेरे लिए अनावश्यक लगता है क्योंकि मैं कुछ क्लास को दो बार निर्दिष्ट कर रहा हूं। क्या इस तरह से इसे घोषित करने का कोई तरीका है कि फर्स्ट क्लास से टी स्वचालित रूप से यू को द्वितीय क्लास के लिए है। मुझे ऐसा दिखने के लिए वास्तव में क्या पसंद आएगा।
class SomeClass {...}
class MyFirstClass : FirstClass<SomeClass> {...}
class MySecondClass : SecondClass<MyFirstClass> {...}
जबकि मुझे संदेह है कि यह सटीक परिदृश्य संभव है, क्या कोई क्लीनर है जो मैं करने की कोशिश कर रहा हूं?
संपादित
कई लोगों ने एक IFirstClass इंटरफेस बनाने का सुझाव दिया है। लेकिन मेरी परिभाषाएं इसके करीब हैं।
class FirstClass<T>
{
public T MyObj { get; set; }
}
class SecondClass<U, T> where U : FirstClass<T>
{
U MyFirstClass { get; set; }
}
एक इंटरफ़ेस के साथ मैं SecondClass से MyFirstClass.MyObj तक नहीं पहुंच सकता। जबकि मैं IFirstClass पर object T MyObj { get; set; }
बना सकता हूं, फिर इसे छिपाने के लिए new
का उपयोग करें, अगर मैं ऐसा करता हूं तो चांदी की रोशनी बाध्यकारी में फिट हो जाती है।
जबकि मैं इस सवाल में चांदी की रोशनी का उल्लेख नहीं करता हूं, यह एक चांदी की रोशनी परियोजना है। मुझे यकीन नहीं है कि यह समाधान को सीमित करेगा या नहीं। – cadrell0
यदि आपने डब्ल्यूसीएफ आरआईए सेवाओं के अपने पीओसीओ कक्षाओं के रूप में टाइपऑफ मार्शल करने की कोशिश की है, तो जेनरिक्स को डब्ल्यूसीएफ या डब्ल्यूसीएफ आरआईए सेवाओं (कुछ प्रमुख कामकाज के बिना) के रूप में उजागर नहीं किया जा सकता है। –
क्या आप फर्स्ट क्लास के बारे में किसी भी प्रकार की विशिष्ट जानकारी का उपयोग कर रहे हैं? यदि नहीं, तो इन उदाहरणों में मुझे क्या करना है, पहले क्लास कुछ IGenericFirstClass इंटरफ़ेस से मेल खाता है और फिर IGenericFirstClass के रूप में बाधा निर्दिष्ट करें। यह यू निर्भरता प्रकार को छुपाता है। –