Web服务中的字符串如果为 null ,则会接收为空字符串。

3
我有一个Web服务,其中有一个方法接收一个对象。对象的属性之一是一个字符串。该属性的默认值为string.empty。
有时我确实想在该对象上设置null并发送它。但如果我这样做,并在调试模式下检查接收到的对象,我会发现已经接收到了一个空字符串。
我尝试以两种方式调用WebService,但两者都会得到相同的string.empty值:
- 通过从服务引用创建Web服务调用对象 - 通过在Web服务代理上调用
有什么好的解决办法吗?

很有可能由于默认值为String.Empty,任何NULL值都将被替换为默认值。将默认值更改为NULL,看看是否有所不同。 - Quintium
2个回答

0
默认值的作用在于当没有提供任何值时使用它。系统无法知道它是否接收到了 null 值,因为您明确地提供了 null 值还是您没有提供任何值,所以如果您告诉它默认为 String.empty,则当它接收到 null 值时就会这样做。如果您想要传递 null 值并将它们作为 null 值接收,那么您必须重新考虑使用默认值的方式。
然而,这里有一个想法:如果您颠倒 string.Empty 和 null 的用法,则默认行为是将 string.Empty 值转换为 null,但有一个数据注释可以防止这种情况发生:
[DisplayFormat(ConvertEmptyStringToNull = false)]

所以也许你可以将 null 作为默认值,对于那些现在需要传递 null 的情况,改为传递 string.Empty,并使用数据注释告诉它让这些值通过?


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接