1

只是将我的应用程序升级到 SignalR alpha。他们改变了 IJsonSerializer 接口

使用以前的界面,我有:

   public string Stringify(object obj)
    {
        var s = "";

            s = JsonConvert.SerializeObject(obj, _settings);

        return s;

    }

它工作得很好。

现在我正在尝试:

public class CustomJsonNetSerializer : IJsonSerializer
{
    private readonly JsonSerializerSettings _settings;

    public CustomJsonNetSerializer(JsonSerializerSettings settings)
    {
        _settings = settings;
    }

    public object Parse(string json)
    {
        return JsonConvert.DeserializeObject(json);
    }

    public object Parse(string json, Type targetType)
    {
        return JsonConvert.DeserializeObject(json, targetType);
    }

    public T Parse<T>(string json)
    {
        return JsonConvert.DeserializeObject<T>(json);
    }
    public void Serialize(object value, System.IO.TextWriter writer)
    {
        var s = "";

            s = JsonConvert.SerializeObject(value, _settings);

        writer.Write(s);

    }
}

但现在没有消息被发送回客户端。

在下面大卫的回答之后编辑 - 这就是我实现它的方式 - 现在与示例一起工作 下面的代码当然毫无意义,因为它完成了默认序列化程序所做的事情 - 但是为了简单起见,我删除了与锁定对象有关的添加

公共类 CustomJsonNetSerializer : IJsonSerializer {

    JsonNetSerializer mySerialiser;
    public CustomJsonNetSerializer(JsonSerializerSettings settings)
    {         
        mySerialiser = new JsonNetSerializer(settings);
    }



    public void Serialize(object value, System.IO.TextWriter writer)
    {
            mySerialiser.Serialize(value, writer);                   
    }

    public object Parse(string json, Type targetType)
    {
        return mySerializer.Parse(json, targetType);
    }
}
4

1 回答 1

1

最简单的方法是使用内置的序列化器(JsonNetSerializer)。更改被序列化的属性的大小写也会破坏 SignalR。我们正在努力。

于 2012-11-23T22:35:30.587 回答