我目前正在开发一个应用程序,需要从SQL数据库中加载数据,然后将检索到的值分配给对象的属性。由于属性名称和列名称相同,因此我使用反射来完成此操作。然而,许多属性使用自定义结构类型,该类型基本上是decimal类型的货币包装器。我在我的结构中定义了一个隐式转换:
public static implicit operator Currency(decimal d)
{
return new Currency(d);
}
当我在代码中使用这个时,它可以正常运行。但是,当我有以下情况:
foreach (PropertyInfo p in props)
{
p.SetValue(this, table.Rows[0][p.Name], null);
}
它抛出了一个ArgumentException,指出它无法将System.Decimal转换为Currency。我感到困惑,因为在任何其他情况下都可以正常工作。