मैं एक अमूर्त वर्ग है BaseItem इस तरह की घोषणा की:का उपयोग जेनरिक
public abstract class BaseItem
{
public BaseItem Parent { get; protected set; }
public List<BaseItem> Children = new List<BaseItem>();
public abstract string Function1();
}
असल में, मैं जहां प्रत्येक आइटम एक माता पिता है कि एक विशिष्ट प्रकार के हो जाएगा है एक डिजाइन को लागू करने के कोशिश कर रहा हूँ और बच्चे जो एक अलग प्रकार के होंगे।
उदाहरण के लिए, आइटमए में बच्चे के सभी आइटम प्रकार होंगे। फिर आइटमबी में आइटमए प्रकार और बच्चों के सभी आइटम आइटम के माता-पिता होंगे। आइटमसी में आइटमबी के माता-पिता और आइटम डी प्रकार के बच्चे होंगे।
मैंने सोचा कि यह अनावश्यक जानवरों से बचने के लिए जेनेरिक का उपयोग करके ऐसा करने के लिए बेहतर होगा क्योंकि मुझे पता है कि माता-पिता और बच्चे मेरे विरासत में से प्रत्येक के लिए किस प्रकार के होंगे। तो मैं इस तरह से कुछ आया:
public abstract class AbstractBase
{
public abstract string Function1();
}
public abstract class BaseItem<T1, T2> : AbstractBase
where T1 : AbstractBase
where T2 : AbstractBase
{
public T1 Parent { get; protected set; }
public List<T2> Children = new List<T2>();
}
public class ItemA : BaseItem<ItemA, ItemB>
{
}
public class ItemB : BaseItem<ItemA, ItemC>
{
}
public class ItemC : BaseItem<ItemB, ItemD>
{
}
public class ItemD : BaseItem<ItemC, ItemD>
{
}
तो दो चीजें। 1. क्या यह एक अच्छा डिजाइन है? क्या ऐसा करने का एक आसान/बेहतर तरीका है? मुझे जेनेरिक का उपयोग करने में सक्षम होने के लिए वास्तव में एक दूसरा सार आधार वर्ग का उपयोग करना पसंद नहीं है। 2. यदि मैं इसे रखता हूं, तो सिरों को संभालने का सबसे अच्छा तरीका क्या है? (यानी ItemA मेरी वास्तविक समस्या डोमेन एक माता पिता नहीं है, लेकिन यह संकलन करने एक माता पिता की जरूरत है। ItemD बच्चे हैं नहीं है, लेकिन मैं इसे कुछ देने की आवश्यकता)
यह सवाल मुझे FORTRAN का उपयोग करना चाहता है। – iandisme
आपके कोड उदाहरण में 'पब्लिक क्लास आइटमसी: बेसइटम <आइटमबी, आइटमसी> 'है, लेकिन संभवतः आप' पब्लिक क्लास आइटमसी: बेसइटम <आइटमबी, आइटमडी> ' का अर्थ है। –