NewtonsoftのJsonライブラリには、カスタムコンバータやその他の設定を適用するためのグローバル設定を行う機能があります。私はシリアル化する各オブジェクトに対して明示的に呼び出す限り動作するカスタムコンバータを持っていますが、それをグローバルに設定したいので、それを行う必要はありません。Newtonsoft.Json DefaultSettings F#
https://stackoverflow.com/a/19121653/2506634
そしてDefaultSettingsプロパティの正式署名は次のとおりです:
public static Func<JsonSerializerSettings> DefaultSettings { get; set; }
私はそうのようなF#1にこれを翻訳しようとしたC#でここに示すように、これは行うことができます。
JsonConvert.DefaultSettings =
System.Func<JsonSerializerSettings>
(fun() ->
let settings = new JsonSerializerSettings()
settings.Formatting <- Formatting.Indented
settings.Converters.Add(new DuConverter())
settings
)
|> ignore
これはエラーなしでコンパイルして実行しますが、カスタムコンバータはseriali zing。また、何らかの理由でプロパティを設定するとブール値が返され(したがって|> ignore
)、このブール値がfalseであることに気付きました。
F#への翻訳で何か問題がありますか?または、組み込みコンバータに優先順位が適用されているため、おそらくNewtonsoftがカスタムコンバータを無視していますか?
あなたは '='を使用しています(そしてあなたは結果を '無視する ')。代わりに '< - 'を使ってプロパティを設定したいとします。 – kvb
@kvb多分私はこれを別の質問にするべきです。なぜF#は '== 'ではなく' = 'と比較するのですか? –
'ignore'を使って自分自身を見つけたら、間違いなく何かを間違いなく実行しています。 –