我的域类中有一个十进制Value属性:
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);
}
有可能吗?
答案 0 :(得分:2)
这根本不可能。属性Value
的类型在编译时设置为decimal
,并且在运行时无法更改。相反,您需要专注于将string
值转换为decimal
值。那或为Domain.Value
选择更合适的类型。
如果您转换路线,那么我建议您查看Convert.ToDecimal
等方法答案 1 :(得分:1)
我认为在运行时更改属性的类型是不可能的。我知道如果可能的话,那将是一个坏主意。
你最好还有一个你存储比较结果的字段。然后你需要使用那个&#34; [DIFFERENT]&#34;值,检查存储结果的字段,然后使用它。