Т.е. идея поменьше кода в сериализации в JSON.
Такой вот самодостаточный тестовый код:
using System;
using System.IO;
using System.Text;
using Newtonsoft.Json;
namespace JsonSerialize {
class Program {
static void Main(string[] args) {
// Предложенный вариант - 6 сток
Console.WriteLine("Предложенный вариант");
using (JsonWriter writer = JsonTextWriterNew.GetJsonTextWriterNew(out StringBuilder sb1)) {
writer.WriteStartObject();
writer.WriteProperty("title", "Наше название");
writer.WriteEndObject();
Console.WriteLine(sb1.ToString());
}
// вместо этого варианта - 9 строк
Console.WriteLine("вместо этого варианта");
StringBuilder sb2 = new StringBuilder();
StringWriter sw = new StringWriter(sb2);
using (JsonWriter writer = new JsonTextWriter(sw)) {
writer.WriteStartObject();
writer.WritePropertyName("title");
writer.WriteValue("Наше название");
writer.WriteEndObject();
}
Console.WriteLine(sb2.ToString());
Console.ReadKey();
}
}
}
namespace Newtonsoft.Json {
public class JsonTextWriterNew : JsonWriter {
private StringBuilder _sb;
private StringWriter _sw;
private JsonTextWriter _jtw;
public static JsonTextWriter GetJsonTextWriterNew(out StringBuilder stringBuilder) {
var jsonTextWriterExt = new JsonTextWriterNew();
stringBuilder = jsonTextWriterExt._sb;
return jsonTextWriterExt._jtw;
}
public JsonTextWriterNew() {
_sb = new StringBuilder();
_sw = new StringWriter(_sb);
_jtw = new JsonTextWriter(_sw);
}
public override void Flush() {
_jtw.Flush();
}
}
public static class JsonWriterExtensions {
public static void WriteProperty(this JsonWriter writer, string name, object value) {
writer.WritePropertyName(name);
writer.WriteValue(value);
}
}
}