如何区分WCF数据契约中用户指定的空值和默认值

本文关键字:空值 默认值 用户 何区 WCF 数据 契约 | 更新日期: 2023-09-27 18:08:15

我需要定义一个WCF API来允许用户更新大型对象。虽然我可以定义几个较小的方法,并让用户一次更新大对象的特定部分。但由于某种原因,我做不到。我尝试的另一种方法是将数据契约定义为键-值的集合(键是enum,值是某个字符串),并让用户添加他想要更新的任何内容。这个api非常紧凑,但它不是很直观,可能会让用户感到困惑。另外,由于该值是字符串类型,所以它不是很类型安全。

现在我已经创建了一个api,用户可以在其中更新整个对象。例如:

public UpdateResult UpdateAPI(UpdateParam param){}

现在UpdateParam类将有几个可空字段。

Q:如果其中一个字段为空值,服务器端如何区分?空值是由用户指定的还是默认的非指定值?在传入的soap消息中有什么东西可以帮助区分吗?

任何帮助都将是非常感激的。

类似的问题有1. 数据成员默认值,如何确定是否真的发送了一些东西?2.

如何区分WCF数据契约中用户指定的空值和默认值

不,据我所知,如果你只有一个可空字段,就没有办法区分条件…

但是,您可以为每个属性提供一个额外的bool值,它可以作为一个标志来指示该值是由用户设置的还是仍在其默认值 上。

你可以实现你的属性的setter来自动设置相应的bool值