Referencje w c# - Problem

0

Witajcie. Mam następujący problem:

Chcę stworzyć aplikację podzieloną na warstwę prezentacyjną i warstwę aplikacji.
Tworzę więc 2 projekty np:

Prezentacja.

Aplikacja.

W projekcie aplikacji mam klasę np:

public class MyFormManager
{
     public static bool ShowForm()
    {
          MyForm obj = new MyForm();
          obj.ShowDialog
    }

     public static int Calculate()
     {
          return 10+20;
      }
}

W projekcie prezentacji mam klasę:

public class MyForm : Form
{
     InitializeForm()
     {
          txtPole.Text = MyFormManager.Calculate;
     }
}

I teraz mam problem. Z projektu Aplikacji daję referencje do projektu Prezentacji. Chcę skompilować projekt, ale

kompilator krzyczy że w projekcie Prezentacji nie istnieje Klasa MyFormManager. Kompilator ma rację, gdyż nie ma

referencji do dllki z projektu aplikacji. Jednak nie mogę utworzyć takiej dllki, gdyż własnie pojawia mi się ten

problem. Więc referencje w projektach się zakleszczają :/.

Mam pytanie jak rozwiązać ten problem ? Oczywiście rozumiem że mogłbym najpierw skompilować projekt tak że nie mam w

projekcje Prezentacji wywołanej funkcj InitializeForm(). A następnie dać referencje do takiej dllki, która zostanie

utworzona, jednak taka operacja nie wchodzi w grę. Nie da się tak zrobić że projekt Aplikacji kompiluje się mimo iż w

projekcie kompuilacji są problemy ??

Z góry bardzo dziękuje za odpowiedź.

0

Mozna stworzyc dodatkowy projekt, w ktorym beda znajdowaly sie Interface'y. Pozniej trzeba ich odpowiednio uzywac w innych projektach. To jest rozwiazanie ogolne takiego problemu.

Co do Twojego konkretnego przypadku to problem jest zupelnie inny. Jesli warstwa biznesowa, musi uzywac metod z warstwy prezentacji (w Twoim przypadku klasy Form), to nie jest ona juz warstwa biznesowa... zatem gubisz podzial na warstwy.

Warstwa biznesowa powinna sie kompilowac bez zadnej referencji na warstwe prezentacji.

0

A ogólnie jeśli chodzi o tworzenie warstwowej architektury aplikacji to polecam poczytać Application Architecture Guide 2.0 od Microsoft patterns & practices oraz zobaczyć na projekt Layered Architecture Sample for .NET, który implementuje właśnie taką architekturę w oparciu o zalecenia MS.

0

W takim razie pytanie odnośnie wykorzystania MVC w .Net, ponieważ problem sprowadza się właśnie do tego.

Czy jest niezbędna używania zewnętrznych narzędzi aby zrealizować założenia 3 warstw w .Net czy framework umożliwia jednoznacznie rozdzielenie tych warstw.

Rozumiem że interfejsy miały by pełnić rolę łącznika który pozwoliłby rozwiązać problem separacji warstw.

Z góry dziękuję za odpowiedź.

0

Warstwy można dzielić różnie - nie musisz koniecznie korzystać z istniejących framework'ów "wielorybów" bo chyba wtedy nic się nie nauczysz.

Twój podział na warstwy od początku był źle zaprojektowany. Proponuje takie rozwiązanie:

  • projekt aplikacji (tutaj będą wszelkie byty prezentacji)
  • biblioteka z warstwą biznesową.

Biblioteka będzie dodana do referencji aplikacji. Aplikacja będzie używała tejże biblioteki. Wszelkie działania, logika, operacje na danych i tym podobne rzeczy będą znajdować się w bibliotece (ale żadnych Form, przycisków i innych rzeczy z prezentacji - to wszystko do aplikacji).

0

Nie wiem czy mnie dobrze zrozumiałeś potrzebuje zrobić następującą rzecz:

Wykorzystując .Net c# napisać aplikację z wykorzystaniem MVC (Model View Controller)

szukam sposobów jakie są wykorzystywane żeby taki efekt osiągnąć. Ponieważ jak widzisz w zamieszczonym przeze mnie przykładzie w przypadku aplikacji NIE WEBOWYCH jest problem z ogarnięciem warstwy controller z view.

zaznaczam raz jeszcze nie szukam alternatywnych rozwiązań korzystania z innych frameworków etc.. chce zrobić tak jak napisałem

Z góry dziękuję za konstruktywną odpowiedź.

0
Kabura napisał(a)

Wykorzystując .Net c# napisać aplikację z wykorzystaniem MVC (Model View Controller)

szukam sposobów jakie są wykorzystywane żeby taki efekt osiągnąć.

Tutaj znajdziesz całe mnóstwo przykładowych implementacji MVC w Windows.Forms.

0
Mendoza napisał(a)
Kabura napisał(a)

Wykorzystując .Net c# napisać aplikację z wykorzystaniem MVC (Model View Controller)

szukam sposobów jakie są wykorzystywane żeby taki efekt osiągnąć.

Tutaj znajdziesz całe mnóstwo przykładowych implementacji MVC w Windows.Forms.

Dobre Mendoza, dobre :-D

1 użytkowników online, w tym zalogowanych: 0, gości: 1