0

このアプリでは、Newtonsoft.Json を使用して、ビデオ フィード オブジェクトを逆シリアル化し、シリアル化します。以前は Newtonsoft.Json 3.5 がありました。そして物事は順調に進んでいました。しかし最近、TweetSharp 2.3 が Newtonsoft.Json.dll に依存しているため、Newtonsoft.Json.dll を 4.5 にアップグレードしました。そして、これにより、ビデオ フィード ページが 404 を返しました。問題を絞り込みました。このコードが問題を引き起こしているようです。

JsonResult = JsonConvert.SerializeObject(
                    collection, 
                    Formatting.Indented,
                    new JsonSerializerSettings { ContractResolver = new GetClipContractResolver(IncludeMedia) });

class GetClipContractResolver : DefaultContractResolver
    {
        private bool IncludeMedia { get; set; }

        public GetClipContractResolver(bool includeMedia)
        {
            this.IncludeMedia = includeMedia;
        }

        protected override JsonProperty CreateProperty(JsonObjectContract contract, System.Reflection.MemberInfo member)
        {

            // remove Clip.Media
            if (member.DeclaringType == typeof(KenticoWhiteLabelCore.Core.VideoDataServiceConsumer.VideoDataClip))
            {
                if (member.Name == "Media" && IncludeMedia == false)
                {
                    return null;
                }
            }

            return base.CreateProperty(contract, member);
        }
    }

JsonConvert.SerializeObject は正常に動作しますが、JsonProperty CreateProperty() オーバーライド メソッドが問題を引き起こしています。私はそれを削除しましたが、すべて正常に動作します。理由はありますか?CreateProperty() をオーバーライドせずに行うことはできません。それを修正する方法に関する提案はありますか?Newtonsoft.Json 4.5 で突然動作しなくなるのはなぜですか?

4

1 に答える 1

0

問題が解決しました。バージョン 4.5 には、異なるメソッド シグネチャがあります。

于 2013-07-02T14:46:41.553 に答える