HugoRune
HugoRune

Reputation: 13819

StreamWriter and IFormatProvider

How do I pass an IFormatProvider to a StreamWriter?

Specifically I want to create a
new StreamWriter("myfile.txt", CultureInfo.InvariantCulture);

TextWriter and StringWriter have a parameter for that in the constructor, but StreamWriter does not.
The Property stringWriter.FormatProvider is readonly.

I could think of three workarounds that seem like bad solutions:

Is there any way to specify a FormatProvider for StreamWriter? Based on Inheritance from TextWriter, the StreamWriter must have the means to handle this, if I could just set the property.

Upvotes: 22

Views: 6871

Answers (2)

Lee
Lee

Reputation: 144206

Since the FormatProvider property is virtual you can create your own subclass which takes an 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;
        }
    }
}

Upvotes: 26

Scott
Scott

Reputation: 1876

You could create a new class inheriting from StreamWriter and override the virtual FormatProvider property.

Upvotes: 2

Related Questions