मैं निम्नलिखित वर्गों/इंटरफेस:सी # जेनेरिक बाधा - वर्तमान वर्ग प्रकार का संदर्भ कैसे लें?
public abstract class AbstractBasePresenter<T> : IPresenter<T>
where T : class, IView
{
}
public interface IPresenter<T>
{
}
public interface IView<TV, TE, TP> : IView
where TV : IViewModel
where TE : IEditModel
//where TP : AbstractBasePresenter<???>
{
}
public interface IView {}
वहाँ किसी भी तरह से है कि मैं IVIEW <> पर टी.पी. विवश कर सकते हैं एक वर्ग है कि AbstractBasePresenter से विरासत होने के लिए है?
या गैर-जेनेरिक आईपेंडर इंटरफ़ेस बनाने का मेरा एकमात्र विकल्प है और फिर इसे लागू करने के लिए प्रतिनिधि प्रस्तुत करें और फिर "टीपी: प्रतिनिधि" चेक का उपयोग करें?
धन्यवाद
अद्यतन:
नीचेप्रस्तावित जवाब काम नहीं करता:
public interface IView<TV, TE, TP> : IView
where TV : IViewModel
where TE : IEditModel
where TP : AbstractBasePresenter<IView<TV,TE,TP>>
{
}
मैं इंटरफ़ेस घोषणा की है के रूप में:
public interface IInsuredDetailsView : IView<InsuredDetailsViewModel, InsuredDetailsEditModel, IInsuredDetailsPresenter>
{ }
public interface IInsuredDetailsPresenter : IPresenter<IInsuredDetailsView>
{ }
संकलक शिकायत है कि IInsuredDetailsPresenter को आबंटित नहीं है सारबेस प्रतिनिधि>
'सार BasePresenter' क्या' टी' के साथ? सी # में सामान्य प्रकार के उदाहरणों की कोई अवधारणा नहीं है जिसके लिए कुछ प्रकार के पैरामीटर सेट नहीं किए गए हैं। –
'जहां टीपी: सारबेज प्रतिनिधि>' संकलित करता है लेकिन मुझे यकीन नहीं है कि यह परिणाम आपको जो परिणाम चाहिए वह प्रदान करेगा ... –
nemesv
एक टिप्पणी के रूप में, निम्नलिखित संरचना अधिक जटिल है और यह समझना मुश्किल है कि यह क्या हो सकता है के लिए उपयोगी। – Andrey