gpt4 book ai didi

c# - StreamWriter 和 IFormatProvider

转载 作者:IT王子 更新时间:2023-10-29 04:49:02 29 4
gpt4 key购买 nike

如何将 IFormatProvider 传递给 StreamWriter?

特别是我想创建一个
new StreamWriter("myfile.txt", CultureInfo.InvariantCulture);

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

我能想到三种看起来不太好的解决方法:

  • 更改 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;
}
}
}

关于c# - StreamWriter 和 IFormatProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12011789/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com