Skip to content

Instantly share code, notes, and snippets.

@kevingessner
Created September 20, 2011 14:20
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kevingessner/1229202 to your computer and use it in GitHub Desktop.
Save kevingessner/1229202 to your computer and use it in GitHub Desktop.
LambdaDisposable
private class LambdaDisposable<T> : IDisposable
{
private Action<T> dispose_;
public T Value
{
get;
private set;
}
public LambdaDisposable(Func<T> start, Action<T> dispose)
{
dispose_ = dispose;
Value = start();
}
public void Dispose()
{
dispose_(Value);
}
}
private LambdaDisposable<JsonWriter> Writer(StringBuilder builder)
{
return new LambdaDisposable<JsonWriter>(
() =>
{
var writer = new StringWriter(builder);
var jsonWriter = new JsonWriter(writer);
jsonWriter.Formatting = Formatting.Indented;
jsonWriter.WriteStartObject();
jsonWriter.WritePropertyName("rg");
jsonWriter.WriteStartArray();
return jsonWriter;
},
writer =>
{
writer.WriteEndObject();
writer.Flush();
writer.Close();
});
}
public string ObjectsJson(IEnumerable<CBug> bugs, IDictionary<string, object> additionalData)
{
var builder = new StringBuilder();
using (var d = Writer(builder))
{
var jsonWriter = d.Value;
.....
}
return builder.ToString();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment