C# StreamWriter和IFormatProvider
如何将IFormatProvider传递给StreamWriter 我特别想创建一个C# StreamWriter和IFormatProvider,c#,filestream,cultureinfo,streamwriter,iformatprovider,C#,Filestream,Cultureinfo,Streamwriter,Iformatprovider,如何将IFormatProvider传递给StreamWriter 我特别想创建一个 newstreamwriter(“myfile.txt”,CultureInfo.InvariantCulture) TextWriter和StringWriter在构造函数中有一个参数,但StreamWriter没有。 属性stringWriter.FormatProvider为只读 我可以想出三种似乎不好的解决方案: 更改Thread.CurrentCulture:这将在库中,所以我不想更改任何全局设置,
newstreamwriter(“myfile.txt”,CultureInfo.InvariantCulture)代码>
TextWriter和StringWriter在构造函数中有一个参数,但StreamWriter没有。
属性stringWriter.FormatProvider为只读
我可以想出三种似乎不好的解决方案:
- 更改Thread.CurrentCulture:这将在库中,所以我不想更改任何全局设置,即使是暂时的
- sw.WriteLine(不变量文化):在几个函数上有很多sw.WriteLine()。我真的不想把他们都搞乱
- 首先使用StringWriter,然后将字符串写入文件:由于流可能变得非常大,这将产生巨大的开销
有没有办法为StreamWriter指定FormatProvider?基于TextWriter的继承,StreamWriter必须具有处理此问题的方法,如果我可以设置属性。您可以创建一个从StreamWriter继承的新类,并重写虚拟FormatProvider属性。由于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;
}
}
}