如何将IFormatProvider传递给StreamWriter?
具体来说我想创建一个
new StreamWriter("myfile.txt", CultureInfo.InvariantCulture);
TextWriter和StringWriter在构造函数中有一个参数,但StreamWriter没有。
属性stringWriter.FormatProvider是readonly。
我可以想到三种似乎不太好的解决方案:
有没有办法为StreamWriter指定FormatProvider?基于TextWriter的继承,如果我可以设置属性,StreamWriter必须有办法处理它。
答案 0 :(得分:22)
由于FormatProvider
属性是虚拟的,您可以创建自己的子类,该子类需要IFormatProvider
:
public class FormattingStreamWriter : StreamWriter
{
private readonly IFormatProvider formatProvider;
public FormattingStreamWriter(string path, IFormatProvider formatProvider)
: base(path)
{
this.formatProvider = formatProvider;
}
public override IFormatProvider FormatProvider
{
get
{
return this.formatProvider;
}
}
}
答案 1 :(得分:2)
您可以创建一个继承自StreamWriter的新类,并覆盖虚拟的FormatProvider属性。