7

Nella mia applicazione, ho un BaseForm che ha un membro generica in esso:Come ereditare un modulo generico e aprirlo nel designer di Visual Studio?

public partial class BaseForm<T> : Form where T : Presenter 
{ 
    protected T Presenter; 

    public BaseForm() 
    { 
     InitializeComponent(); 
    } 
} 

Ora che cosa ho bisogno è di avere una forma che viene ereditato da mia BaseForm

public partial class SampleForm : BaseForm<SamplePresenter> 
{ 
    public SampleForm() 
    { 
     InitializeComponent(); 
     Presenter = new SamplePresenter(); 
    } 
} 

Il problema è che il designer di Visual Studio non mostra il mio SampleForm derivato da BaseForm<T>.

Si dà questo avvertimento:

Attenzione 1 Il progettista non può essere visualizzata per questo file perché nessuna delle classi all'interno di esso può essere progettato. Il progettista ha esaminato le seguenti classi nel file:

SampleForm --- Impossibile caricare la classe base "Invoice.BaseForm". Assicurarsi che l'assembly sia stato referenziato e che tutti i progetti siano stati costruiti. 0 0

Come posso superare questo?

P.S. Ho guardato allo this post ma non ho avuto l'idea di come risolverlo.

risposta

10

Il progettista non supporta questo, come descritto in quel post.

avete bisogno di questo classe di base:

public partial class SampleFormIntermediate : BaseForm<SamplePresenter> 
{ 
    public SampleFormIntermediate() 
    { 
     InitializeComponent(); 
     Presenter = new SamplePresenter(); 
    } 
} 

ed è necessario utilizzare questa classe per Visual Studio Designer:

public partial class SampleForm : SampleFormIntermediate 
{ 
} 

In questo modo, Visual Studio 'capisce' quello di aprire nel il designer e come aprirlo.

+0

Non è l'idea di avere diversi presentatori in diverse classi ereditarie. – Magnus

+0

@Magnus: il problema degli OP si concentra sull'integrazione del designer di Visual Studio. Niente di più. Penso che questo sia quello che dovrebbe essere per quello. –

+0

Grazie, è esattamente quello che stavo cercando. Ora posso solo avere un pacchetto di test in cui sarò in grado di aprire l'interfaccia utente con il designer e far sì che il progetto reale venga implementato tramite generici. Grazie ancora :) – Carmine

Problemi correlati