簡體   English   中英

是否可以讓 Convert.ChangeType() 接受貨幣?

[英]Is it possible to make Convert.ChangeType() accept currency?

NumberFormatInfo nfi = new NumberFormatInfo();
nfi.CurrencySymbol = "$";

var result1 = decimal.Parse("$123456", NumberStyles.Any, nfi).Dump(); // this works well
var result2 = Convert.ChangeType("$123456", typeof(decimal), nfi); // this doesn't work

我需要 Convert.ChangeType() 來接受貨幣,這可能嗎? 嘗試設置 NumberFormatInfo,但看起來它忽略了貨幣值。

Convert是一個靜態類,而ChangeType()也是一個靜態方法,因此您不能覆蓋它們。

但是,即使這不是您所要求的,您也可以創建自己的類,更改您希望它為十進制(和任何其他類型)工作的方式,並使用Convert.ChangeType()作為其他類型的默認值:

public static class MyConvert 
{
     public static object? ChangeType(object? value, Type conversionType, IFormatProvider provider)
     {
         if (conversionType == typeof(decimal))
             return decimal.Parse(value.ToString(), NumberStyles.Any, provider);
         else
             return Convert.ChangeType(value, conversionType, provider);
     }
} 

現在,以下代碼將按您的預期工作:

var result2 = MyConvert.ChangeType("$123456", typeof(decimal), nfi);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM