只是将我的应用程序升级到 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);
}
}