7

W mojej aplikacji, mam BaseForm który ma ogólny element w nim:Jak dziedziczyć ogólny formularz i otworzyć go w projektancie Visual Studio?

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

    public BaseForm() 
    { 
     InitializeComponent(); 
    } 
} 

Teraz to, co potrzebne jest, aby mieć postać, która jest dziedziczona z moim BaseForm

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

Problem polega że projektant Visual Studio nie wyświetla mojego SampleForm pochodzącego z BaseForm<T>.

Daje to ostrzeżenie:

Warning 1 projektant nie mogą być pokazane dla tego pliku, ponieważ żadna z klas w nim mogą być zaprojektowane. Projektant skontrolował następujące pliki w pliku:

SampleForm --- Nie można załadować klasy podstawowej "Invoice.BaseForm". Upewnij się, że zestaw został odwołany i że wszystkie projekty zostały zbudowane. 0 0

Jak mogę to przezwyciężyć?

P.S. Spojrzałem na this post, ale nie miałem pojęcia, jak rozwiązać ten problem.

Odpowiedz

10

Projektant nie obsługuje tego, zgodnie z opisem w tym poście.

Trzeba tę klasę bazową:

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

i trzeba użyć tej klasy dla Visual projektanta Studio:

public partial class SampleForm : SampleFormIntermediate 
{ 
} 

W ten sposób, Visual Studio 'rozumie', co otworzy w projektant i jak go otworzyć.

+0

Nie jest to pomysł na różne prezentery w różnych klasach dziedziczenia. – Magnus

+0

@Magnus: Problem dotyczący OP koncentruje się na integracji projektanta Visual Studio. Nic więcej. Myślę, że tak właśnie powinno być. –

+0

Dzięki, właśnie tego szukałem. Teraz mogę po prostu mieć pakiet testowy, w którym będę mógł otworzyć interfejs użytkownika z projektantem i mieć rzeczywisty projekt zaimplementowany za pomocą generycznych. Jeszcze raz dziękuję :) – Carmine

Powiązane problemy