SignalR:排除非可序列化类型

时间:2017-12-13 00:27:52

标签: javascript c# json serialization signalr

我有一个这样的课程:

public class MyData
{
    public int Id { get; set; }
    public String Name { get; set; }
    public ThirdPartyClass { get; set; } // non serializable
}

我说"不可序列化"因为当我以这种方式将我的类传递给SignalR客户端函数时:

var hub = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
var myData = new MyData();
// fill fields
hub.Clients.All.data(myData);

呼叫返回错误500。 删除违规字段,它按预期工作。

请注意,我

现在我知道解决这个问题的两种方法:

  1. 编写自定义json序列化程序
  2. 创建仅包含相关字段的影子类,复制值并将此类发送到客户端
  3. 当你有十几个田地时,两个人都很不舒服。 我想知道是否有一些DataAnnotation我可能会用来从序列化中排除一个字段。

1 个答案:

答案 0 :(得分:0)

您可以使用IgnoreDataMemberAttribute(),但我不确定这是否适用于SignalR。

如果不起作用的替代方法是JsonIgnore注释。

最后,还有ScriptIgnore

IgnoreDataMember Class Reference