繁体   English   中英

使用反射更改属性类型

[英]Change property type using reflection

我的域类中有一个十进制值属性:

public class Domain
{
   public decimal Value {get;set}
}

我需要为该 Value 属性分配两个数据库值:

obj1.Value = decimal.Parse(reader["Value"].ToString());
obj2.Value = decimal.Parse(reader["Value2"].ToString());

然后我有一个比较器方法来比较这两个属性:

public void Compare(List<object> Domains)
{
     //get properties with reflection

     //if the properties values are different I need to set a 'string' value [DIFFERENT]           to it.       
     prop.SetValue(comparableObj, "[DIFFERENT]", null);
}

有可能吗?

这简直是​​不可能的。 属性Value的类型在编译时设置为decimal ,并且在运行时无法更改。 相反,您需要专注于将string值转换为decimal值。 或者为Domain.Value选择更合适的类型。

如果你走转换路线,那么我建议看看像Convert.ToDecimal这样的方法

我认为不可能在运行时更改属性的类型。 我确实知道,如果可能的话,那将是一个坏主意。

你最好有另一个字段来存储比较结果。然后当你需要使用“[DIFFERENT]”值时,检查你存储结果的字段,然后改用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM