gpt4 book ai didi

c# - 是否可以使 Convert.ChangeType() 接受货币?

转载 作者:行者123 更新时间:2023-12-02 13:00:52 24 4
gpt4 key购买 nike

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);

关于c# - 是否可以使 Convert.ChangeType() 接受货币?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59359392/

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