2011-12-28 14 views
0

デフォルトのdecimal.ToString( "c")メソッド呼び出しをオーバーライドする方法を探しています。私はカスタムフォーマットプロバイダを書いています。decimal.ToString(myprovider)のようなことをすると動作しますが、decimal.ToString( "c")をカスタムプロバイダ経由で呼び出すデフォルトプロバイダをオーバーライドする方法はありますか? NumberFormatの動作ではなく、私がそれをオーバーライドできることを知っています。これは、数値書式情報を使用し、出力にプラグインする実際のフォーマッタに関するものです。最終的な目標は、書式設定中に値を計算することです。デフォルトの書式プロバイダをオーバーライドする

私はこのような何かをカスタム書式プロバイダーを使用して、あなたを提案することができ感謝し

答えて

1

は、これを達成する1つの方法は、カスタムプロバイダを記述して、現在のスレッドの数の書式プロバイダを変更することでした。これにより、すべてのdecimal.ToString("c")がカスタムプロバイダーにルーティングされ、コードに従ってフォーマットされます。

0

、それはあなたの問題を解決する必要があります

class CustomFormatter : IFormatProvider, ICustomFormatter{} 

string.Format(new CustomFormatter(), "{0}", yourDecimalValue) 

あなたには、いくつかの追加のパラメータを指定したい場合は、CustomFormatterのctorのに渡すことができます。 このコードを試してみてください。あなたが望むものがまさに見つかると思います。

おかげで、 Kiryl

+0

私はカスタムプロバイダを使用していました。問題は、ToString呼び出しを使用している古いコードを保持しようとしていたため、これは受け入れられない解決策でした。 – Leadfoot

関連する問題