我是WampSharp的新手,所以在回答时请记住这一点。
某些操作返回的类型如下:
public class Material
{
public MaterialId Id { get; }
public SupplementId? SupplementId { get; } // <=====
public string Name { get; }
public string Info1 { get; }
public string Code { get; internal set; }
public string TotalQuantity { get; }
}
每当属性SupplementId
为null时,WampSharp都会引发异常,告诉我SupplementId
为null,这是正确的-它是一个Nullable。 WampSharp是否使用JsonSerializer来处理不忽略空值的问题?如果是这样,如何配置WampSharp使用的JsonSerializer?如何使WampSharp对此进行处理而不会引发异常?
编辑: 经过研究,我发现Json序列化不是问题。我能够定位代码中的点,在这里我可以看到我的客户端收到的原始Json。
就像其他人的信息一样
WampSharp.WebSocket4Net.WebSocket4NetTextConnection<TMessage>.OnMessageReceived(object sender, MessageReceivedEventArgs e)
,它是的消息属性 收到的事件。
这是我收到的Json:
[
50,
933947611565250,
{
},
[
[
{
"Id":"b96bea25-eafd-4158-8901-1a780fc20598",
"Name":"100",
"Info1":"SCHALTKREIS L7915CV",
"Code":"",
"TotalQuantity":"365000"
},
<... more items in list ...>
{
"Id":"11b520eb-128d-4ca2-9e8e-f90fbc181596",
"Name":"10007",
"Info1":"Gehäuse MODU 4pol 1reihig weibl.",
"Code":"",
"TotalQuantity":"385000"
}
]
]
]
到目前为止看来一切都很好。我将预期的数据传递给客户端,并且数据看起来不错。但是,我仍然在WampSharp.V2.CalleeProxy.WampCalleeProxyInvocationHandler.Invoke<T>(ICalleeProxyInterceptor interceptor, MethodInfo method, IOperationResultExtractor<T> extractor, object[] arguments)
我很好奇的是Json中的空对象,就在结果数据序列之前。那样行吗?这可能是问题吗?我在做什么错了?