【发布时间】:2015-09-09 18:11:18
【问题描述】:
我想创建一个 XmlTextWriter 的扩展,其中包含许多自定义方法来写下我在自己的文件格式中使用的类和结构(我不想使用序列化,因为有时标签嵌套可能非常深因此定义所有 XmlElement 属性并创建所有必要的投影会非常繁琐)。 这是我所做的:
public sealed class MySpecialWriter : XmlTextWriter
{
private static readonly XmlWriterSettings s_DefaultSettings = new XmlWriterSettings
{
CloseOutput = true,
Encoding = new UTF8Encoding(false),
Indent = true,
IndentChars = "\t",
NewLineChars = Environment.NewLine,
NewLineHandling = NewLineHandling.Replace,
OmitXmlDeclaration = false,
};
public MySpecialWriter(Stream output, Encoding encoding) : base(output, encoding) { }
public MySpecialWriter(String output, Encoding encoding) : base(output, encoding) { }
public MySpecialWriter(TextWriter output) : base(output) { }
public static MySpecialWriter Initialize(StringBuilder sb)
{
return (MySpecialWriter)Create(sb, s_DefaultSettings);
}
public void WriteMyClass(MyClass value)
{
...
}
}
当我尝试使用它时(只是一个简单的测试,看看它是否有效):
StringBuilder sb = new StringBuilder();
try
{
using (MySpecialWriter writer = MySpecialWriter.Initialize(sb))
{
writer.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
writer.WriteMyClass(value)
writer.Flush();
}
}
catch (Exception e)
{
return null;
}
return sb.ToString();
我从“初始化”方法中得到以下异常:
无法将“System.Xml.XmlWellFormedWriter”类型的对象转换为“System.Xml.XmlTextWriter”类型。
你能帮帮我吗?
【问题讨论】:
标签: c# .net xml inheritance casting