2010-08-24 7 views

Odpowiedz

4

Możesz ponownie użyć plików cs, dodając je do projektu AS LINK. Kliknij prawym przyciskiem myszy w projekcie i wybierz Dodaj istniejące ... Przejdź do pliku, a następnie w przycisku Otwórz użyj strzałki rozwijanej z prawej strony, aby wybrać opcję Dodaj jako łącze. Zobaczysz plik dodany do twojego projektu za pomocą ikony, na której jest nałożona mała ikona skrótu systemu Windows.

Po prostu zapamiętaj - środowisko ASP.Net działa w środowisku wykonawczym .Net. Silverlight działa w CoreCLR (środowisko wykonawcze Silverlight). Nie wszystko, co się kompiluje, będzie się kompilowało w drugim ...

Aby oddzielić trochę rzeczy, pomocne mogą być różne dyrektywy #if, można również użyć klas częściowych i metod częściowych (aby dodać zawartość działającą tylko na serwerze lub kliencie.)

+0

tak, to oznacza to prawie sprawniej budować identyczną klasę w projekcie silverlight, ponieważ nie ma pewności, że wszystko będzie skompilować? – locoboy

+2

@ cfarm45: najmądrzejszy sposób, by przejść, to prawie zawsze ten, który ma najmniejszy kod. Jeśli twoja restrukturyzacja klasy domeny, więc nie zależy od asp.net, możesz ich ponownie użyć. Kopiowanie kodu jest zawsze plan B. –

+0

@jdv ok zobaczę, co mogę zrobić – locoboy

1

Dobrze, ASP.NET sama nie zadziała (ditto Wiele z pełnymi bibliotekami), ale jestem zakładając po prostu oznacza, że ​​lokalny model domeny itp

IIRC ty możliwe, spróbuj po prostu odwołać się do niego, ale może również wygenerować komunikat ostrzegawczy. Oczywiście musisz być wyjątkowo ostrożny, aby nie używać niczego, czego druga platforma nie obsługuje ...

IMO, lepszą opcją jest tutaj utworzenie drugiego csproj zawierającego te same pliki .cs (lub oszukiwanie z zawiera znak wieloznaczny/głęboki). I zbuduj oba. To samo C#, różne biblioteki dll/platformy.

Często zdarza się, że potrzebny jest również bardzo mały stosowanie dyrektyw z #if.

+0

samo pytanie, które ja zapytałem avidgator powyżej – locoboy

+0

@ cfarm54 - samą odpowiedź ... –

1

WCF RIA Services może pomóc w rozwiązaniu problemu. Silverlight nie używa tego samego środowiska wykonawczego co program ASP.Net i nie można bezpośrednio udostępniać zestawów zawierających klasy modeli po stronie klienta i serwera. Aby rozwiązać ten problem, usługi RIA usługi WCF będą w przejrzysty sposób generować klasy po stronie klienta w oparciu o klasy modeli po stronie serwera. Oczywiście usługi WCF RIA umożliwiają również tworzenie, odczytywanie, aktualizowanie i usuwanie obiektów tych klas za pomocą usługi sieciowej.

MSDN ma bardziej szczegółowe informacje na temat WCF RIA Services Client Code Generation.

+0

jak trudno jest się tego nauczyć? – locoboy

+1

@ cfarm54: Nie wiem jak zmierzyć, jak ciężko jest, ale możesz wypróbować niektóre próbki na MSDN (śledzić mój link) i przekonaj się sam. Jeśli nie potrzebujesz usługi internetowej, być może sugestia Marca Gravella, w której pliki źródłowe są udostępniane za pomocą linków, jest prostsza. –

2

Usługi RIA to zdecydowanie najlepszy sposób na udostępnienie kodu między ASP.Net a Silverlight.

Oprócz wspomnianej wcześniej generacji modeli usług domenowych, umożliwia również udostępnianie pojedynczych plików między aplikacją internetową a Silverlight po prostu wstawiając "shared" do nazw plików. na przykład "MyClass.shared.cs".

Usługi RIA nie zajmują dużo czasu, aby pogodzić się z (i istnieją dobre tutoriale na temat). Try this one.

Powiązane problemy