2011-12-28 74 views
0

我正在尋找一種方法來覆蓋默認的decimal.ToString(「c」)方法調用。我寫了我的自定義格式提供程序,它在我做類似decimal.ToString(myprovider)的工作時有效,但是有什麼方法可以覆蓋默認提供程序來通過我的自定義提供程序來路由decimal.ToString(「c」)調用嗎?請注意,它不是關於NumberFormat的作品,我知道我可以覆蓋它。它關於使用數字格式信息並將其插入輸出中的實際格式化程序。最終目標是在格式化時對值進行一些計算。覆蓋文化的默認格式提供程序

感謝

回答

1

一種方式實現這一目標是編寫自定義提供程序,然後更改數字格式提供商當前線程。這將根據您的代碼將所有decimal.ToString("c")路由到您的自定義提供商和格式。

0

我可以使用自定義的格式提供這樣的建議你,它應該解決您的問題

class CustomFormatter : IFormatProvider, ICustomFormatter{} 

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

如果要指定一些額外的參數,你可以將它們傳遞到的CustomFormatter構造函數。 嘗試使用此代碼,我想你會找到你想要的。

感謝, Kiryl

+0

我正在使用自定義提供程序,是的他們的方式,你說它的工作。麻煩的是我試圖保留一些使用ToString調用的舊代碼,所以這是不可接受的解決方案。 – Leadfoot 2012-03-04 15:28:16