我在忽略属性时遇到问题,因此不会将其发送给客户端。我有这个物体
public class UserEntry : IComparable<UserEntry>
{
[JsonIgnore]
public string UserId { get; set; }
public string AnonymousUserId { get; set; }
}
例如,当我向我的signalR应用程序发送消息时,UserId
仍在数据中,但我只想发送AnonymousUserId
,因为{{ 1}}仅用于后端,并且永远不会在客户端中使用。
所以当我到达这里
UserId
public Task TopUserBroadcast(TopUsersBroadcastNotificationModel model)
{
SignalRClient.SendAsync(SignalRAppMethods.Broadcast, Constants.GetInfoGroup(model.InfoId), ResponseMessageIDs.TopUsers,model.Entries);
return Task.CompletedTask;
}
仍在userId
中。无论如何,我可以使其忽略该属性?
和model.Entries
如下
TopUsersBroadcastNotificationModel
所以我真正想要并希望public class TopUsersBroadcastNotificationModel
{
public List<UserEntry> Entries { get; set; }
public long InfoId { get; set; }
public TopUsersBroadcastNotificationModel(List<UserEntry> entries, long InfoId)
{
Entries = entries;
InfoId = infoId;
}
}
解决的问题是,当它发送给客户端时,应该忽略UserId,因此,如果我登录到客户端的条目,那里应该没有UserId。
答案 0 :(得分:0)
您需要在您的实体中添加以下功能:
public bool ShouldSerializeXXXX() { return false; }
将XXXX
更改为您的属性名称。
对于您的情况UserId
:
public bool ShouldSerializeUserId() { return false; }
如果需要使其动态,可以在返回字段中输入静态布尔值,并在需要时进行更改
编辑
关于您的评论,这就是我的情况: 我有一个带有指纹作为字符串字段的人员类,并且我不想通过SignalR集线器甚至是Web服务将其发送到,但是通过使用特定的操作来获取指纹,所以考虑实体{{1 }}的指纹如下
person
我添加了此方法:
public string fingerprint { get; set; }
public bool ShouldSerializefingerprint() { return ShouldSerializefingerprintTest; }
字段是一个静态布尔属性,可以将其编辑为true或false
默认情况下为false,因此不会在任何webservice / signalR上显示指纹
当我需要将指纹ShouldSerializefingerprintTest
移到ShouldSerializefingerprintTest
时
但是true
可以满足您的需求。
您可以在microsoft doc上找到更多信息。