我有一个带有接收和对象的方法的Web服务。对象的一个属性是字符串。此属性的默认值为string.empty。
有时我确实希望在该对象上设置null并发送它。但是,如果我这样做并检查在调试模式下接收到的对象,我会看到已经收到一个空字符串。
我试图以两种方式调用webservice,两者都产生相同的string.empty值;
任何想法如何解决这个问题?
答案 0 :(得分:0)
默认值的一点是,在没有提供任何内容时将使用它。系统无法知道它是否收到空值,因为您明确地提供了一个空值或者因为您没有提供值,所以如果您告诉它默认为String.empty那么它就会这样做它获得一个空值。如果你希望能够传递空值并让它们像这样接收,你将不得不重新考虑使用默认值。
但是,这里有一个想法:如果你反转string.Empty和null的用法,默认行为是将string.Empty值转换为null,但是有一个数据注释会阻止这个:
[DisplayFormat(ConvertEmptyStringToNull = false)]
所以也许你可以使用null作为默认值,在你现在将它传递给null的情况下传递string.Empty,并告诉它让那些通过使用那个数据注释来完成?
答案 1 :(得分:0)
我相信使用自定义序列化程序可以实现这一目标。默认情况下,空字符串在服务边界上传递为空。
查看ixmlserialisable或iserializable
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.iserializable(v=vs.110).aspx
如果使用wcf
http://msdn.microsoft.com/en-us/library/ms731073(v=vs.110).aspx