0

サーバー上に次のようなServiceContractがあります。

[ServiceContract]
public interface ICheckService
{
    [OperationContract]
    IEnumerable<Message> CheckInbox(string user);
}

上記の定義をクライアントのプロキシ クラスにコピーしました。

[ServiceContract]
public interface ICheckService
{
    [OperationContract]
    IEnumerable<Message> CheckInbox(string user);
}

クライアントをコンパイルすると、次のエラーが発生します。

The type or namespace name 'Message' could not be found (are you missing a using directive or an assembly reference?) (CS0246)

Message.cs

public class Message
{
    public int message_id;
    public string message_from;
    public string message_to;
    public string message_text;
    public DateTime message_time;
}

ここでDataContracts出番ですか?その場合、ServiceContract 定義で何を変更すればよいですか?

注: ServiceContract には、単純なデータ型を返し、機能している他の OperationContracts があります。

4

2 に答える 2

2
[DataContract]
public class Message{
[DataMember]
public String Sender{get;set;}
//etc - not sure what your message class contains
}

そんな感じ :)

于 2012-05-23T09:49:33.980 に答える
1

はメッセージ通信フレームワークであることに注意してくださいWCF。これらのメッセージは、つまり、このクラスのこのオブジェクトがサービスを介して通信または移動することを通知するために、属性 DataContractsによって装飾されたクラスです。あなたの例では、一連のオブジェクトをクライアントに送信しています。これは である必要があり、クライアントに表示されるはずのプロパティは属性で装飾する必要があります。DataContractWCFclassDataContractDataMember

 [DataContract]
 public class Message
 {
   [DataMember]
   public string Name{get;set;}
 }

したがって、Messageサービス契約ではなく、契約を変更する必要があります。

于 2012-05-23T09:59:09.423 に答える