【发布时间】:2016-02-16 16:01:34
【问题描述】:
我们计划将我们的 Windows 服务升级为 WCF 服务,我知道这与问题无关。在几个 dll 中定义了数百个类。
我正在做一些研发以通过 WCF 服务传递下面代码中显示的现有类对象
[ServiceContract]
public interface IService1
{
[OperationContract]
UserSession LoginUser(User user);
}
上面代码中使用的“UserSession”和“User”类是程序集中预定义的普通类。由于这些类未定义为“DataContract”,因此服务无法序列化它们。
我无法将这些类重新定义为“DataContract”。 有什么方法可以使用现有的类作为“DataContract”在客户端和服务器之间顺利通信。
注意-我已经通过this,数百个课程的学习还有很长的路要走。
提前致谢
【问题讨论】:
-
[DataContract]属性是 可选 作为 WCF 3.5。如果您不指定它,WCF 将默认尝试使用DataContractSerializer(除非您更改它)。您观察到什么表明它没有被序列化?请注意,唯一将被序列化的是数据 - 方法和构造函数不会被序列化,并且客户端不会知道它们,除非它们所在的程序集是共享的。这是为了保持 SOA 而设计的。您可以发布其中一个类的示例吗?
标签: c# .net wcf datacontractserializer