首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StreamWriter和IFormatProvider

StreamWriter和IFormatProvider
EN

Stack Overflow用户
提问于 2012-08-17 19:09:25
回答 2查看 6K关注 0票数 20

如何将IFormatProvider传递给StreamWriter?

具体来说,我想创建一个

new StreamWriter("myfile.txt", CultureInfo.InvariantCulture);

TextWriter和StringWriter在构造函数中有一个参数,但是StreamWriter没有。

属性stringWriter.FormatProvider是只读的。

我可以想到三个看似糟糕的解决方案:

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

有办法为FormatProvider指定StreamWriter吗?基于来自TextWriter的继承,如果我只需要设置属性,StreamWriter就必须有处理这个问题的方法。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-17 19:16:28

因为FormatProvider属性是虚拟的,所以您可以创建自己的子类,它接受一个IFormatProvider

代码语言:javascript
复制
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;
        }
    }
}
票数 25
EN

Stack Overflow用户

发布于 2012-08-17 19:16:03

您可以创建一个从StreamWriter继承的新类,并重写虚拟FormatProvider属性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12011789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档