Benutzer mit den meisten Antworten
Wie nutzt man normale Klassenbibliotheken

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:48Beantworter -
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 CommunityMontag, 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 -
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