我需要定义一个WCF API以使用户能够更新大对象。虽然我可以定义一些较小的方法,让用户一次更新大对象的特定部分。但由于某种原因,我无法做到这一点。我试过的另一种方法是将数据契约定义为键值集合(键是enum
,值是一些字符串)并让用户添加他想要更新的内容。这个api非常紧凑,但它不是非常直观,可能会让用户感到困惑。此外,由于值是字符串类型,因此它不是非常类型安全。
所以我现在创建了一个api,用户可以在其中更新整个对象。 例如:
public UpdateResult UpdateAPI(UpdateParam param){}
现在UpdateParam
类将有几个可以为空的字段。
问:如果其中一个字段中存在空值,那么如何区分服务器端, null值是由用户指定的还是默认的非指定值?传入的肥皂信息中是否有某些内容可以帮助区分?
非常感谢任何帮助。
提出的类似问题是 1. Data member default values, how to figure out whether something was really sent? 2.
答案 0 :(得分:3)
不,据我所知,如果你只有一个可以为空的领域,就无法区分条件......
但是,您可以为每个属性提供一个额外的bool,它可以作为一个标志来指示该值是由用户设置还是仍然是默认值
您可以实施属性的setter,以便在设置属性时自动设置相应的bool