我正在研究在此情況下從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'.
是因爲這兩個屬性來自不同的程序集?如果是這樣,甚至有可能做我以後的事情?
謝謝,
這很好。謝謝。 –