Perhaps I\'m going about this all wrong (and please tell me if I am), but I\'m hitting my head against a wall with something that seems like a really simple concept.
Alternate method using relfection:
private string GetString(HtmlTextWriter writer)
{
// the flags to see the internal properties of the writer
System.Reflection.BindingFlags flags = System.Reflection.BindingFlags.Default;
flags |= System.Reflection.BindingFlags.NonPublic;
flags |= System.Reflection.BindingFlags.Instance;
flags |= System.Reflection.BindingFlags.FlattenHierarchy;
flags |= System.Reflection.BindingFlags.Public;
// get the information about the internal TextWriter object
System.Reflection.FieldInfo baseWriter = writer.GetType().GetField("writer", flags);
// use that info to create a StringWriter
System.IO.StringWriter reflectedWriter = (System.IO.StringWriter)baseWriter.GetValue(writer);
// now we get a StringBuilder!
StringBuilder builder = reflectedWriter.GetStringBuilder();
return builder.ToString();
}
Then it's a simple matter of re-creating the HtmlTextWriter using the string and a StringBuilder.
This was built using a couple clues I picked up from a conversation between Tom Spink and Rotsey on EggheadCafe