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)

消息.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,换句话说,它们是由DataContract属性修饰的类,以告知 WCF该类中的此对象将通过服务进行通信或传播。在您的示例中,您正在向客户端发送一组对象,那么这class应该是一个DataContract并且应该对客户端可见的属性应该用DataMember属性装饰。

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

因此,您应该修改您的合同Message而不是服务合同

于 2012-05-23T09:59:09.423 回答