Autor Beitrag
knoepdan
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Mi 04.08.10 08:46 
Hi

In unserem Projekt (.NET 4, VS 2010, WindowsForms) benutzen wir ab und zu Generics für unsere Forms und User Controls. Bis anhin funktionierte das sehr gut, nun bin ich aber auf eine Problem gestossen. Meine Implementation eines Forms mittels Generics kann nicht mehr im Design-Mode angezeigt werden. Ansonsten funktionierte es allerdings wie gewünscht. Der Grund ist vermutlich die übermässige Benutzung von Generics:

ausblenden C#-Quelltext
1:
2:
// wird nicht im Designer angezeigt!!
  public partial class WizardBaseForm<T, TControler> : WinFormView<TControler>



Folgendes funktionierte allerdings:

public partial class WizardBaseForm<T> : Form


Weiss jemand was ich machen kann um trotzden auf die Unterstützung des Designers zählen zu können? Darauf verzichte ich sehr ungern.
Auch Workarounds willkommen.

(Leider gibt es kein Präprozessor für den Design Mode wie im Compact Framework. Sonst würde ich folgendes versuchen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
 #if DESIGNTIME
    //public partial class WizardBaseForm<T> : Form
    #else
    public partial class WizardBaseForm<T, TControler> : WinFormView<TControler>
    #endif
)

Ich bin dankbar für jede Hilfe.

Gruss

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt
knoepdan Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 13.08.10 09:11 
Hi

Mein Workaround sieht folgenermassen aus:


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
#if DESIGNTIME
    public partial class WizardBaseForm<T, TControler> : Form, IHelperDelegates, IMessageDisplayer
        where T:class
        where TControler : class, MVCSharp.Core.IController
    {
     
   #else
    public partial class WizardBaseForm<T, TControler> : WinFormView<TControler>
        where T : class
        where TControler : class, MVCSharp.Core.IController
    {
#endif


Die Klasse die von Form erbt kann designet werden,diejenige die von einer Klasse mit Generics erbt nicht. Zusätzlich habe ich eine Configuration "DesignTimeConfig" definiert in der die Präprozessor Variable DESIGNTIME definiert ist. Im ConfigurationManager kann ich nun auf "DesignTimeConfig" umschalten und so das Form doch im Designer anschauen.

Nicht die Lösung die ich mir wünsche aber besser als gar nichts.

Gruss

Moderiert von user profile iconKha: C#-Tags hinzugefügt