我目前正在开发一个应用程序,我需要从 SQL 数据库加载数据,然后将检索到的值分配给对象的属性。我通过使用反射来做到这一点,因为属性名和列名是相同的。但是,许多属性都使用自定义结构类型,它基本上是小数类型的货币包装器。我在我的结构中定义了一个隐式转换:
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。我很困惑,因为它在任何其他情况下都可以正常工作。