मैं आधार Windows Forms रूप बनाने की कोशिश कर रहा हूं जिसमें सामान्य कार्यक्षमता और नियंत्रण होता है - लेकिन उस वर्ग के संदर्भ भी रखता है जिसके लिए इसके तरीकों के लिए एक प्रकार की आवश्यकता होती है। प्रत्येक प्रपत्र एक अलग प्रकार का प्रतिनिधित्व करेगी, इसलिए मैंने सोचा कि मैं इस की तर्ज पर कुछ कर सकते हैं कि:जेनेरिक प्रकारों के साथ बेस विंडोज फॉर्म फॉर्म क्लास क्यों डिज़ाइनर लोडिंग को रोकता है?
public partial class Base<T> : Form where T : BaseClass
{
private GenericHandler handler = new GenericHandler();
}
public class BaseClass { }
public class GenericHandler
{
public void DoSomethingWithInstance<T>(T instance) where T : BaseClass
{
}
}
मेरे डिजाइनर वर्ग घोषणा भी दर्पण क्या मेरी रूप है। अब जब मैं किस प्रकार Foo
का प्रतिनिधित्व करता है मेरी दूसरी प्रपत्र करते हैं, मैं, डिजाइनर उपयोग नहीं कर सकते क्योंकि मैं इस त्रुटि मिलती है:
The designer could not be shown for this file because none of the classes within it can be designed. The designer inspected the following classes in the file: Foo --- The base class 'WindowsFormsApplication1.Base' could not be loaded. Ensure the assembly has been referenced and that all projects have been built.
FooClass --- The base class 'WindowsFormsApplication1.BaseClass' cannot be designed.
public partial class Foo : Base<FooClass>
{
public Foo()
{
InitializeComponent();
}
}
public class FooClass : BaseClass { }
इस क्यों होता है/क्या मैं वहाँ गलत कर रहा हूँ या कर रहे हैं ऐसा करने के लिए कोई और तरीका?
कोई स्पष्टीकरण नहीं है, लेकिन ध्यान दें कि आप सामान्य आधार वर्ग नहीं होने के कारण इस मुद्दे के आसपास काम कर सकते हैं (लेकिन मैं करता हूं), लेकिन एक मध्यवर्ती आधार वर्ग जो स्वयं एक सामान्य वर्ग से प्राप्त होता है: 'Foo: FooBase', 'FooBase: बेस '। इसके आधार के अलावा 'फूबेस' की परिभाषा में कुछ भी नहीं है। –
hvd
@hvd यह एक इलाज करता है। मैं इसे एक उत्तर के रूप में स्वीकार करता हूं लेकिन यह एक टिप्पणी है। – LukeHennerley
मैंने इसे एक टिप्पणी के रूप में पोस्ट किया क्योंकि यह आपके द्वारा पूछे गए प्रश्न का उत्तर नहीं देता है; मुझे लगता है कि आपको इसे स्वीकार नहीं करना चाहिए। यहां तक कि यदि आपके द्वारा पूछे जाने वाले प्रश्न से अब आपके लिए कोई फर्क नहीं पड़ता है :) – hvd