在wcf中为参数传递null将导致对象引用未设置为对象的实例

本文关键字:对象引用 设置 对象 实例 wcf 参数传递 null | 更新日期: 2023-09-27 17:53:46

我试图找到一个解决方案,很长一段时间没有运气。

我用以下接口创建了netnamedpipes服务

[OperationContract]
[ServiceKnownType(typeof(SubTable))]
float GetValue(Table table);

,当我在客户端以null调用它时

proxy.GetValue(台);

我得到空期望,因为wcf不能序列化空我希望能够像这样传递null:

if  (tbl!= null)
var result = proxyGetValue(tbl);
else
var result = proxyGetValueWhenNull();

在wcf中为参数传递null将导致对象引用未设置为对象的实例

您是否尝试过将表包装为另一个类的属性并设置属性[DataMember(IsRequired=false/true)]?

[DataContract]
public class TableWrapper{
    [DataMember(IsRequired=false)]
    public Table Table{get;set;}
}
[OperationContract]
[ServiceKnownType(typeof(SubTable))]
float GetValue(TableWrapper tableWrapper);
if  (tableWrapper.Table!= null)
    var result = proxyGetValue(tableWrapper.Table);
else
    var result = proxyGetValueWhenNull();