【问题标题】:How to use existing classes as datacontract in wcf?如何在 wcf 中使用现有类作为数据契约?
【发布时间】: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


【解决方案1】:

我四处寻找可以让您将整个类作为 DataContract 发送的解决方案,但它似乎并不存在。 我能给出的最佳建议是使用阅读器检索这些类中的数据,然后通过 DataContract 发送数据。但我认为这正是你不想做的事情。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-09
    • 1970-01-01
    • 1970-01-01
    • 2013-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多