我在十进制字段上使用了这个扩展:
public static class Extensions
{
static System.Globalization.CultureInfo _cultInfo = System.Globalization.CultureInfo.InvariantCulture;
public static string ConvertToStringWithPointDecimal(this decimal source)
{
return source.ToString(_cultInfo);
}
}
但是当我有一个动态参数时,它包含一个带有小数的类类型,我不能在这些字段上使用扩展名。
测试设置:
public class TestDecimalPropClass
{
public decimal prop1 { get; set; }
public decimal prop2 { get; set; }
}
private void TryExtensionOnDynamicButton(object sender, EventArgs e)
{
TestDecimalPropClass _testDecimalPropClass = new TestDecimalPropClass { prop1 = 98765.432M, prop2 = 159.753M };
TestExtension(_testDecimalPropClass);
}
private void TestExtension(dynamic mySource)
{
decimal hardDecimal = 123456.789M;
string resultOutOfHardDecimal = hardDecimal.ConvertToStringWithPointDecimal();
decimal prop1Decimal = mySource.prop1;
string resultOutOfProp1Decimal = prop1Decimal.ConvertToStringWithPointDecimal();
string resultOutOfProp2 = mySource.prop2.ConvertToStringWithPointDecimal();
}}
resultOutOfHardDecimal 和 resultOutOfProp1Decimal 都返回正确的字符串值,但是当代码命中 mySource.prop2.ConvertToStringWithPointDecimal() 时,我收到此错误:“'decimal' 不包含 'ConvertToStringWithPointDecimal' 的定义”,而 prop2 是十进制类型。
有什么想法吗?
亲切的问候,
马蒂斯