Hallo,
ich habe einen WCF-Webservice mit verschiedenen Methoden. Eine davon hat als Rückgabewert eine Klasse mit verschiedenen Properties. Die Rückgabeklasse sieht so aus:
[Serializable]
public class Result
{
private ResultTypes _resultType = ResultTypes.None;
[DataMember]
public ResultTypes ResultType
{
get
{
return _resultType;
}
set
{
_resultType = value;
}
}
private string _message = "";
[DataMember]
public string Message
{
get
{
return _message;
}
set
{
_message = value;
}
}
}
Meine private-Vaiablen fangen alle mit einem Unterstrich an, die Properties sind normal geschrieben. Wenn ich vom Client aus der Methode aufrufe
und auf die Klasse zugreifen möchte bietet er mir die Properties allerdings nur mit Unterstrich an - was natürlich etwas unhandlich ist. Ich hab es schon mit dem [DataMember] Attribut versucht. Hat aber nichts geholfen.
Woran liegt denn das ?
Gruß Marcel
du solltest die Klasse schon sauber mit Attributen und Attributwerten ausstatten:
[DataContract(Name = "XYZ", Namespace = "Blubb.ABC")]
public class XYZ
{
private string _message = "";
[DataMember(Name = "Message")]
public string Message
{
get
{
return _message;
}
set
{
_message = value;
}
}
}
so stellst du auch sicher, daß sich der Membername für WCF-Clients nicht ändert, wenn du die Eigenschaft "Message" irgendwann mal umbenennst.
Hallo!
Ich hätte da auch nochmal eine Frage: Wie kann man eigentlich die Methoden aus einer Klasse über den Webservice zu Verfügung stellen.
Ich habe eine Silverlight-Klassenbibliothek und aus dieser benutze ich eine Klasse in meinem Webservice. In der Klasse sind Eigenschaften, Methoden, sowie auch ein zweiter Konstruktor mit Parametern enthalten.
Möchte ich nun über den Webservice-Proxy in meiner Silverlight-Applikation eine neue Instanz dieser Klasse erstellen, kann ich nicht auf den zweiten Konstrukor und auch nicht auf die Methoden zugreifen, sondern nur auf die Eigenschaften.
Habt ihr da evtl. eine Idee?
MfG
Echo]6[
du meinst eine Methode, die du in einer Klasse in der Webservice-Anwendung erstellt hast, auf der Konsumentenseite (WS-Client) benutzen? Geht nicht. Es werden nur Daten übertragen, keine Programminhalte. Wär ja noch schöner, wenn ein Webdienst Programmcode in eine Anwendung weiterreichen könnte. Abgesehen sind Webservices dazu da, plattformunabhängig Daten zwischen Anwendungen austauschen zu können. Das wäre nicht möglich, wenn man da tatsächlich echte Objektinstanzen vom Webservice empfangen könnte.