C#无法从导入的库中反序列化类的对象

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,

在Unity项目中,我有一些用于WebSocket交互的类WsMessage。这个类位于我自己的库WebSocketModels中

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;