मैं सामान्य वर्ग वर्ग के सभी वर्गों को प्राप्त करने के लिए कुछ तरीकों की तलाश में हूं, और उन वर्गों में से प्रत्येक पर एक विधि का प्रदर्शन करता हूं।एक सामान्य सार वर्ग के सभी विरासत वर्ग प्राप्त करें
मैं, कुछ इसी तरह यह करने के लिए वर्ग कार्यान्वयन मैं चाहता हूँ के लिए इस Change parameter type when implementing an abstract method निम्नलिखित किया गया है:
public abstract class AbstractRequest<TResponseData>
where TResponseData : IResponseData
{
public abstract void Search();
public abstract GoodData BindData(TResponseData data);
}
public interface IResponseData
{
}
public class AResponse : IResponseData
{
}
public class BResponse : IResponseData
{
}
public class A : AbstractRequest<AResponse>
{
public override void Search()
{
// get AResponse
// Call to BindData() with AResponse
}
public override GoodData BindData(AResponse data)
{
// Bind the data from AResponse to GoodData
}
}
public class B : AbstractRequest<BResponse>
{
public override void Search()
{
// Get BResponse
// Call to BindData() with BResponse
}
public override GoodData BindData(BResponse data)
{
// Bind the data from BResponse to GoodData
}
}
यह काम कर रहा है खोजने के, जब तक मैं सभी एक & बी वर्ग हो और आह्वान करने के लिए की जरूरत है प्रत्येक कक्षा के लिए Search()
विधि। एक गैर सामान्य सार वर्ग के साथ, मैं निम्नलिखित स्निपेट का उपयोग वर्गों
var instances = from t in Assembly.GetExecutingAssembly().GetTypes()
where t.IsSubclassOf(typeof(AbstractRequest))
&& t.GetConstructor(Type.EmptyTypes) != null
select Activator.CreateInstance(t) as AbstractRequest;
फिर प्राप्त करने के लिए कर सकता है, मैं सभी वर्गों ए और बी है कि AbstractRequest<AResponse>
और AbstractRequest<BResponse>
से विरासत कैसे मिल सकता है?
संपादित करें: मैं उल्लेख करना भूल गया। आइए मान लें कि ए या बी के समान कई कार्यान्वयन होंगे, और समय के साथ जोड़ा जाएगा। मैं बाद में एक "सुरुचिपूर्ण" (यदि संभव हो) समाधान करना चाहता हूं, तो मुझे केवल कार्यान्वयन सी, डी, आदि की देखभाल करने की आवश्यकता है
धन्यवाद!
मैन, आपका संपादित उत्तर बिल्कुल वही है जो मुझे चाहिए !!! परीक्षण किया, और मेरे मामले में पूरी तरह से ठीक काम किया। आपका बहुत बहुत धन्यवाद! –