C# 使用自定义TextWriter重写Render方法

C# 使用自定义TextWriter重写Render方法,c#,asp.net,controls,overriding,web-controls,C#,Asp.net,Controls,Overriding,Web Controls,我想重写WebControl的Render方法,但是我想使用从HTMLTextWriter继承的HTMLTextWriterExtension类代替HTMLTextWriter,该类中有一些重写以及我需要的一些功能 基类渲染(网络控制) 覆盖类渲染(我的类) 上面的问题是,这不是对Render方法的重写,因此在渲染期间不会调用 我意识到这是可能的,因为WebControl做了与它用HTMLTextWriter覆盖控件的渲染方法相同的事情 我就是不知道怎么做。我可能有点心神不宁,有点不舒服,现在是

我想重写WebControl的Render方法,但是我想使用从HTMLTextWriter继承的HTMLTextWriterExtension类代替HTMLTextWriter,该类中有一些重写以及我需要的一些功能

基类渲染(网络控制)

覆盖类渲染(我的类)

上面的问题是,这不是对Render方法的重写,因此在渲染期间不会调用

我意识到这是可能的,因为WebControl做了与它用HTMLTextWriter覆盖控件的渲染方法相同的事情

我就是不知道怎么做。我可能有点心神不宁,有点不舒服,现在是星期一早上。。这应该很简单

不管怎样,谢谢你给我的建议。
注意。

您只需覆盖相同的签名,然后使用您的writer,然后将内容从您的writer复制到原始writer:

基类渲染(网络控制)

重写类渲染(我的类)


对不起,是的,我犯了一个错误,我以为控件在使用TextWriter,但实际上它是HTMLTextWriter。这让我相信还有别的办法。谢谢你的帮助!
protected internal override void Render(HtmlTextWriter writer);
public override void Render(HtmlTextWriterExtension output)
protected internal override void Render(HtmlTextWriter writer);
public override void Render(HtmlTextWriter output)
{
    // string builder is just an example of storage that custom TextWriter uses
    var builder = new StringBuilder();
    var myCustomWriter = new HtmlTextWriterExtension(builder);
    base.Render(myCustomWriter);
    myCustomWriter.Flush();

    // write content written from base class to original writer
    output.Write(builder.ToString()); 
}