Methoden an Datacontract freigeben

24/08/2009 - 10:33 von Jan Thordsen | Report spam
Hallo

ich arbeite mich gerade in WCF ein und habe irgendwie Verstàndnisprobleme am
Datacontract. Wie ich Datamamber freigebe ist klar, aber jetzt ich möchte ich
einem CLient für diesen DataMember eine Methode freigeben, so dass diese an
Intanzen des Datamembers auch am Client verwendet werden kann. Außerdem
möchte ich die ToString Methode überschreiben, damit sie beim AUfruf
aussagekràftigere Daten liefert.

Hier mein Code

[DataContract]
public class Session
{
[DataMember (IsRequired=true, Name="UserID")]
private int _UserID;
public int UserID
{
get { return _UserID; }
set { _UserID = value; }
}

[DataMember(IsRequired = true, Name="SessionGuid")]
private System.Guid _SessionGUID;
public System.Guid SessionGUID
{
get { return _SessionGUID; }
set { _SessionGUID = value; }
}

[DataMember(IsRequired = true, Name="ConnectionString")]
private string _ConnectionString;
public string ConnectionString
{
get { return _ConnectionString; }
set { _ConnectionString = value; }
}

[DataMember(IsRequired = true, Name = "IsConnected")]
private bool _Connected;
public bool Connected
{
get { return _Connected; }
set { _Connected = value; }
}

public Session(int userid, System.Guid sessionguid, string
connectionstring, bool connected)
{
this._UserID = userid;
this._SessionGUID = sessionguid;
this._ConnectionString = connectionstring;
this._Connected = connected;
}

public override string ToString()
{
string ret = "Your connection data is:" + "";
ret += "UserID:" + this._UserID.ToString() + "";
ret += "SessionGUID:" + this._SessionGUID.ToString() + "";
ret += "Connectionstring:" + this._ConnectionString + "";
ret += "Connected:" + this._Connected.ToString();
return ret;
}

public void DoSomething()
{
}
}

In dieser Klasse Session sollen am Client:
- die Methode DoSomething() ausführbar sein, die überschriebene
ToStringMethode sichtbar sein und der Konstruktor am Client mit seinen
Parametern sichtbar sein.

All das funzt zur Zeit nicht, heisst am Client sehe ich den parameterlosen
Konstruktor, ToString() gibt den Klassennamen zurück und DoSomethign ist gar
nicht da.

Kann mir jemand sagen, wie das geht?

Gruß

Jan
 

Lesen sie die antworten

#1 Roland Liess
24/08/2009 - 18:02 | Warnen spam
Hallo Jan,

ich arbeite mich gerade in WCF ein und habe irgendwie Verstàndnisprobleme am
Datacontract. Wie ich Datamamber freigebe ist klar, aber jetzt ich möchte ich
einem CLient für diesen DataMember eine Methode freigeben, so dass diese an
Intanzen des Datamembers auch am Client verwendet werden kann. Außerdem
möchte ich die ToString Methode überschreiben, damit sie beim AUfruf
aussagekràftigere Daten liefert.


...
In dieser Klasse Session sollen am Client:
- die Methode DoSomething() ausführbar sein, die überschriebene
ToStringMethode sichtbar sein und der Konstruktor am Client mit seinen
Parametern sichtbar sein.

All das funzt zur Zeit nicht, heisst am Client sehe ich den parameterlosen
Konstruktor, ToString() gibt den Klassennamen zurück und DoSomethign ist gar
nicht da.

Kann mir jemand sagen, wie das geht?


Das ist meines Wissens nicht vorgesehen.

Eigentlich ist der DataContract die Beschreibung von
Eigentschaften/Felder für den Client.
Im ServiceContract können OperationContracts angelegt werden und als
Methodenaufrufe vom Client aufgerufen werden.

z.B.

[DataContract]
public class Data

[ServiceContract]
public class MyService {

[DataMember]
Data MyData{ get; set; }

[OperationContract]
void DoSomething();
}

Gruß Roland

Ähnliche fragen