我在服务器上有一个 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,它们返回简单的数据类型并且正在工作。
答案 0 :(得分:2)
[DataContract]
public class Message{
[DataMember]
public String Sender{get;set;}
//etc - not sure what your message class contains
}
类似的东西:)
答案 1 :(得分:1)
请注意,WCF
是一个消息通信框架,这些消息是DataContracts
,换句话说,它们是由DataContract
属性修饰的类,以便通知{{1}来自此类的此对象将通过服务进行通信或传播。在您的示例中,您要向客户端发送一组对象,然后此WCF
应为class
,并且应为客户端显示的属性应使用DataContract
属性进行修饰
DataMember
因此,您应该修改合同 [DataContract]
public class Message
{
[DataMember]
public string Name{get;set;}
}
而不是服务合同