Referencja do klasy, która ma konstruktor z argumentami

0

Co mam teraz:
2 projekty w solucji, nazwijmy je ProjektA i ProjektB, oba typu WebSite, z elementami WebService'u (tzn. są w nich pliki asmx).

Co chciałam zrobić:
W ProjektB umieściłam asmx DajKsiazke, a w nim jedną webmetodę:

Ksiazka DajKsiazke(tytul, autor)
{
    Ksiazka ksiazka = new Ksiazka(tytul, autor);
    return ksiazka;
}

a w ProjektA dodałam WebReference do DajKsiazke.asmx... i tu jest właśnie problem. Nie można zwracać WebMethodą klasy, która nie posiada bezargumentowego konstruktora.

Jeśli dorobię taki konstruktor, to i tak będę miała dostęp tylko do niego, a nie o to mi chodzi. Nie mam też dostępu do publicznych metod Ksiazki. Wygląda na to, że podeszłam do problemu ze złej strony...

Jak najlepiej uzyskać efekt, który jest mi potrzebny?
Tzn.

  • chcę mieć klasę, która ma argumenty w konstruktorze
  • chcę, by ta klasa była dostępna w drugim projekcie z solucji
  • nie może tu być dllki

Bardzo proszę o nakierowanie, czego ja właściwie szukam, bo czuję, że zbłądziłam...
Czy wystarczy, jeżeli moja klasa będzie serializowalna? Czy muszę zrobić jakis inny rodzaj referencji? Czy może błąd jest już w projekcie klas?

0

Klasyczne Web Service'y są dość zubożałe. Wszystkie typy, jakie będziesz chciała przesyłać nie są serializowane tradycyjnie, tylko po drugiej stronie tworzona jest klasa proxy, która ma jedynie konstruktor domyślny, nie ma metod, właściwości ma zamienione na publiczne pola, etc.
Są dwa rozwiązania, ale raczej nie do końca spełniają twoje warunki. Pierwsze to ręczne zmodyfikowanie klasy proxy po stronie klienta i dodanie czego tam chcesz (wciąż nie będzie to ta sama klasa) albo użycie WCF, który zrobi to automatycznie (ew. Remoting, ale jest dość przestarzały). Tak czy inaczej, jakiś wspólny typ w obu projektach musi być obecny, przez WSDL definicji pełnowartościowej klasy z C# przekazać się nie da.

0

Eh, wielka szkoda, miałam taką piękną wizję, tak mi się wszystko sensownie układało i taki ładny diagram klas mi z tego wyszedł... szkoda że nierealny :(

Dzięki za informacje, teraz przynajmniej mam podstawy by przeforsować rozwiązanie oparte na przekazywaniu xmli.

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