繁体   English   中英

StreamWriter和IFormatProvider

[英]StreamWriter and IFormatProvider

如何将IFormatProvider传递给StreamWriter?

具体来说我想创建一个
new StreamWriter("myfile.txt", CultureInfo.InvariantCulture);

TextWriter和StringWriter在构造函数中有一个参数,但StreamWriter没有。
属性stringWriter.FormatProvider是readonly。

我可以想到三个似乎不好的解决方案:

  • 更改Thread.CurrentCulture:这将在库中,所以我宁愿不更改任何全局设置,即使是暂时的。
  • sw.WriteLine(InvariantCulture ,,):在很多函数中有很多sw.WriteLine()。 我真的很想避免弄乱他们所有人。
  • 首先使用StringWriter然后将字符串写入文件:由于流可能变得非常大,这将产生巨大的开销。

有没有办法为StreamWriter指定FormatProvider? 基于TextWriter的继承,如果我可以设置属性,StreamWriter必须有办法处理它。

由于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;
        }
    }
}

您可以创建一个继承自StreamWriter的新类,并覆盖虚拟FormatProvider属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM