最佳答案
考虑下面的示例代码:
class SampleClass
{
public long SomeProperty { get; set; }
}
public void SetValue(SampleClass instance, decimal value)
{
// value is of type decimal, but is in reality a natural number => cast
instance.SomeProperty = (long)value;
}
现在,我需要通过反思做一些类似的事情:
void SetValue(PropertyInfo info, object instance, object value)
{
// throws System.ArgumentException: Decimal can not be converted to Int64
info.SetValue(instance, value)
}
注意,我不能假设 PropertyInfo 始终表示一个 long,也不能假设该值始终是一个小数。但是,我知道可以将该值强制转换为该属性的正确类型。
如何通过反射将“ value”参数转换为 PropertyInfo 实例表示的类型?