この場合、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);
「reason」は、タイプ OptionSetValue のエンティティのプロパティです。このように使用すると、上記の行で次の例外が発生します。
Invalid cast from 'System.Int32' to 'Microsoft.Xrm.Sdk.OptionSetValue'.
2 つのプロパティが異なるアセンブリに由来するためですか? もしそうなら、私が求めていることをすることさえ可能ですか?
ありがとう、