在这种情况下,我正在研究从 Int32 转换为更复杂的类型。
以下是您如何通过正常方式获得这种复杂类型的实例:
OptionSetValue option = new OptionSetValue(90001111); //int value...
现在,我正试图通过反射来做到这一点。这是我的方法:
public static void SetValue(object entity, string propertyName, object value)
{
try
{
PropertyInfo pi = entity.GetType().GetProperty(propertyName);
Type t = Nullable.GetUnderlyingType(pi.PropertyType) ?? pi.PropertyType;
object safeValue = (value == null) ? null : Convert.ChangeType(value, t); //Line where the exception is thrown...
pi.SetValue(entity, safeValue, null);
}
catch
{
throw;
}
return;
}
这是我使用它的方式:
SetValue(entity, "reason", 90001111);
“原因”是 OptionSetValue 类型实体的属性。当像这样使用它时,在上面提到的行上,我会得到这个异常:
Invalid cast from 'System.Int32' to 'Microsoft.Xrm.Sdk.OptionSetValue'.
是因为这两个属性来自不同的程序集吗?如果是这样,甚至有可能做我所追求的吗?
谢谢,