あなたはこのようにいくつかのコードを使用することがありますIYamlTypeConverter順序を書く:それは、あなたが順番に「NULL」のエントリになるだろうemitter.Emit(new Scalar("null"))
を呼び出すことによりYamlDotNet:シーケンス内に空の文字列としてnull値を出力する方法はありますか?
public class MyObjectConverter : IYamlTypeConverter {
public MyObjectConverter() {}
public bool Accepts(Type type) { return typeof(IMyObject) == type || typeof(IMyObject[]) == type; }
public object ReadYaml(IParser parser, Type type) { return null; }
public void WriteYaml(IEmitter emitter, object value, Type type) {
var itemVal = value as IMyObject;
if (itemVal != null)
emitter.Emit(new Scalar(itemVal.GetID()));
else {
var arrayVal = value as IMyObject[];
emitter.Emit(new SequenceStart(null, null, true, SequenceStyle.Block));
if (arrayVal != null) {
foreach (var item in arrayVal)
if (item != null) emitter.Emit(new Scalar(item.GetID()));
else emitter.Emit(new Scalar("null"));
}
emitter.Emit(new SequenceEnd());
}
}
}
が、あなたはYamlDotNetまでの連載を残す場合''(空の文字列)としてシリアライズされます。
カスタムIYamlTypeConverterを書き込むときに、空の文字列としてシーケンスにnull値を出力するにはどうすればよいですか?
うーん..私はこの答えをあまりにも早く受け入れたようだ。 私はまだYamlDotNet.Core.Emitter.AnalyzeScalarでnull参照を取得しています。 また、私はフィドルリンクがあなたが表示しようとしたコードにつながっていないと思います。 – Steinbitglis
私はフィドルのコードを更新しました。私は救うことを忘れていたに違いない。スタックトレースにNullReferenceExceptionを指定できますか? –