C#无法从导入的库中反序列化类的对象
在Unity项目中,我有一些用于WebSocket交互的类WsMessage。这个类位于我自己的库WebSocketModels中C#无法从导入的库中反序列化类的对象,c#,unity3d,json.net,il2cpp,C#,Unity3d,Json.net,Il2cpp,在Unity项目中,我有一些用于WebSocket交互的类WsMessage。这个类位于我自己的库WebSocketModels中 namespace WebSocketModels { [Serializable] public enum WsMessageType { System, Player, Challenge, DeclineChallenge, RemoveChallenge, Game, Move, Moves, Chat,
namespace WebSocketModels
{
[Serializable]
public enum WsMessageType
{
System, Player, Challenge, DeclineChallenge, RemoveChallenge, Game, Move, Moves, Chat,
Players, Challenges, Games, Clock
}
[Serializable]
public class WsMessage
{
public WsMessageType type { get; set; }
public string data { get; set; }
public WsMessage() { }
public WsMessage(WsMessageType type, string data)
{
this.type = type;
this.data = data;
}
}
}
由于某种原因,它无法反序列化。我没有看到任何错误。
如果我将这个类从库中直接移动到WsMessage的Unity项目对象中,则会正常创建。
我使用以下简单命令获取WsMessage的对象:
WsMessage message = JsonConvert.DeserializeObject<WsMessage>(inputWsMessage);
所以,问题似乎就在这里
public WsMessageType type { get; set; }
public string data { get; set; }
为什么??因为{get;set;}
是getter和setter方法的语法糖
因此,换句话说,您上面的代码“等价于”
public void WsMessageType_SetValue(WsMessageType value)
{
WsMessageType = value;
}
public WsMessageType WsMessageType_GetValue()
{
return WsMessageType;
}
“数据”也是如此
当您试图将某些数据序列化到某个函数中时,问题就出现了,它没有任何意义,{get;set;}
快捷方式使其更难查看
如果您使用变量而不是getter/setter,它应该可以工作
ie
您应该显示json内容,可能它与wsmessage不匹配如果
public WsMessageType type
由您需要使用的json中的字符串表示,请参阅和。除此之外,我们还需要一个帮助,特别是JSON。添加了JSON示例。但序列化本身并不是问题,在Mono脚本中,一切都正常。另外,如果我的类直接位于Unity项目中,它也可以正常反序列化。尝试从导入的库WebSocketModels反序列化类的对象时出现问题。
public void WsMessageType_SetValue(WsMessageType value)
{
WsMessageType = value;
}
public WsMessageType WsMessageType_GetValue()
{
return WsMessageType;
}
public WsMessageType type;
public string data;