1

アプリケーションをSignalRalphaにアップグレードするだけです。彼らは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);

    }
}

しかし、現在、メッセージはクライアントに返送されていません。

以下のDavidの回答に従って編集-これは私が実装した方法です-サンプルで動作するようになりました以下のコードは、デフォルトのシリアライザーが行うことを行うのでもちろん無意味です-しかし、簡単にするためにオブジェクトのロックに関連する追加を削除しました

パブリッククラス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 に答える