locked
Wie nutzt man normale Klassenbibliotheken RRS feed

  • Frage

  • Hallo,

    ich teste grad mit einer Silverlightanwendung herum, die einen Webservice aus einer extra Bibliothek nutzt, um Daten aus der Datenbank zu holen. Nun würde ich in dieser extra Bibliothek gerne Klassen aus normalen Kassenbibliotheken verwenden, wie ich sie in Forms-Anwendungen nutze. Das Projekt läßt sich zwar fehlerfrei compilieren, aber Daten kommen in der Silverlight-Anwendung nicht mehr an, sobald die entsprechende Datenklasse aus einer normalen Klasenbibliothek kommt.

    Woran liegt das, und was kann ich dagegen tun?

    Bodo

    Montag, 3. Januar 2011 14:11

Antworten

  • Hallo Bodo.

    Du kannst Silverlight Assemblys nicht mit "normalen" .Net Assemblys kombinieren. Unter anderem weil eine andere Runtime zum verarbeiten des Codes verwendet wird.

    Was du allerdings tun kannst ist eine Silverlight Lib und eine .Net Lib zu erstellen und die Klassen (CS-Dateien) dann per Link oder über Externals/Branches im SVN (o.Ä.) in beiden Projekten zu nutzen.

    Das funktioniert ganz gut. Objekte und Funktionen die du nicht in beiden Runtimes zur Verfügung hast kannst du jeweils per Präprozessordirektiven ausblenden.

    Daniel


    http://www.silverlight-community.de - deutsche Community mit Tutorials, Blogs und Usergroups
    • Als Antwort vorgeschlagen Oliver Michalski Dienstag, 4. Januar 2011 12:19
    • Als Antwort markiert Bodo Jäger Dienstag, 4. Januar 2011 12:21
    Dienstag, 4. Januar 2011 12:01

Alle Antworten

  • Das sind zu wenig Informationen die du lieferst.
    SL Anwendungen bekommen Ihre Daten von einem Webservice, der z.B. in einer ASP.NET Anwendung gehostet wird.
    Für diese Daten werden entweder Proxy Klassen erstellt oder es werden Klassen wiederverwendet.
    Wenn du sagst, dass jetzt keine Daten mehr ankommen, dann hast du wohl etwas an dem Datenzugriff geändert!

    Montag, 3. Januar 2011 14:48
    Beantworter
  • Hallo Bodo,
    Nun würde ich in dieser extra Bibliothek gerne Klassen aus normalen Kassenbibliotheken verwenden, wie ich sie in Forms-Anwendungen nutze. Das Projekt läßt sich zwar fehlerfrei compilieren, aber Daten kommen in der Silverlight-Anwendung nicht mehr an, sobald die entsprechende Datenklasse aus einer normalen Klasenbibliothek kommt.

    so genau hab ich nicht verstanden, was Du meinst. Willst Du bspw. über SqlConnection Daten aus einem SQL Server laden? Falls ja, geht nicht. Den Weg über die Webservices musst Du so oder so gehen, daher macht es auch wenig Sinn, eine Änderung von diesen Weg zu versuchen.

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Montag, 3. Januar 2011 14:55
  • Stimmt, Silverlight bekommt seine Daten von einem Webservice. Dieser Service ermittelt seine Daten aus der Datenbank, erstellt für jeden Datensatz ein Objekt (z.B. aufgrund Klasse clsMaschine) und sammelt diese in einer Liste an, die dann an die SL-Anwendung übergeben wird.

    Soweit so gut. Solange diese Klasse clsMaschine in der gleichen Bibkiothek wie der Webservice definiert ist, funktioniert auch alles. Sobald die Klasse in einer weiteren Klassenbibliothek definiert, und über einen Verweis eingebunden wird, funktioniert es nicht mehr.

    Montag, 3. Januar 2011 15:43
  • Sie können nicht über Ihren eigenen Beitrag abstimmen.
    Erstellst du eine neue Silverlight- oder eine "normale" .NET-Klassenbibliothek?

    Evtl. wird die "neue" Klasse aus dem Verweis verwendet, anstatt die Proxy Klasse...
    Kontrolliere dann mal den Namespace.
    Montag, 3. Januar 2011 15:51
    Beantworter
  • Die Klassen sollen aus einer normalen Klassenbibliothek kommen.

    Die SL-Anwendung hat eine Service Reference auf eine Services.dll, und diese hat wiederum eine Referenz auf eine normale Klassenbibliothek (DAL.dll).

    Wenn ich mir jetzt in der SL-Anwendung anschaue, was da als Klasse generiert wird, so fehlt mir da komischerweise ein Property. Der Namespace zeigt aber auf die richtige dll ([Namespace]:=http://schemas.datacontract.org/2004/07/DAL)

     

    Dienstag, 4. Januar 2011 10:58
  • Hallo Bodo.

    Du kannst Silverlight Assemblys nicht mit "normalen" .Net Assemblys kombinieren. Unter anderem weil eine andere Runtime zum verarbeiten des Codes verwendet wird.

    Was du allerdings tun kannst ist eine Silverlight Lib und eine .Net Lib zu erstellen und die Klassen (CS-Dateien) dann per Link oder über Externals/Branches im SVN (o.Ä.) in beiden Projekten zu nutzen.

    Das funktioniert ganz gut. Objekte und Funktionen die du nicht in beiden Runtimes zur Verfügung hast kannst du jeweils per Präprozessordirektiven ausblenden.

    Daniel


    http://www.silverlight-community.de - deutsche Community mit Tutorials, Blogs und Usergroups
    • Als Antwort vorgeschlagen Oliver Michalski Dienstag, 4. Januar 2011 12:19
    • Als Antwort markiert Bodo Jäger Dienstag, 4. Januar 2011 12:21
    Dienstag, 4. Januar 2011 12:01