Walcze z tym już dobre pół dnia i nie mogę tego rozwiązać.
Mój problem polega na tym że obiekt ktory wysyłam z hosta a obiekt ktory otrzymuję u klienta są różne.
po krótce
Moj interfejs
[ServiceContract()]
interface ISimpleTalkServiceInterface
{
[OperationContract]
void LogIn(int account_number);
[OperationContract]
void LogOut(int account_number);
[OperationContract]
void SendMessage(ServiceMessage service_message);
[OperationContract]
ServiceMessage ReceiveMessage(int account_number);
}
klasa ServiceMessage
[DataContract]
class ServiceMessage
{
[DataMember]
public int sender_account { get; set; }
[DataMember]
public int addresser_account { get; set; }
[DataMember]
public string message_type { get; set; }
[DataMember]
public string database_message_type { get; set; }
[DataMember]
public string message_body { get; set; }
}
host zawiera instancje klientów, w ktorym gromadzi wiadomości do nich.
Podczas gdy klient wywoła ReceiveMessage, jedna wiadomość z kolejki jest mu zwracana.
Problem polega na tym że u klienta co prawda otrzymuję wiadomość, aczkolwiek jest ona inna, tzn wygląda to tak jakby nowo stworzony przed chwilą obiekt typu ServiceMessage czyli wartosci 0,0,null,null,null.
Każda pomoc się przyda. Oczywiście wiadomości w postaci typów prostych jak int, string przechodzą bez problemu.
Rzecz jasna mogę napisać po stronie serwera i clienta metody ktore będą konwertowały obiekt klasy do string-a w te i we wte, ale wiem że da się to zrobić oznaczając klasę jako DataContract i pola jako DataMember, na przykładach w internecie widziałem zrobione to w taki sam sposób.