我尝试从 CodeProject改编本教程以尝试dynamic
将在本例中为 int 的 a 更改为简单的Enum
.
如果我们这样定义Enum
:
public Enum MyEnum { Zero = 0, One = 1, Two = 2 }
MyObject
以及设置包含一个类的值的方法的内容MyEnum
:
var baseType = propertyInfo.PropertyType.BaseType; //`propertyInfo` is the `PropertyInfo` of `MyEnum`
var isEnum = baseType != null && baseType == typeof(Enum); //true in this case
dynamic d;
d = GetInt();
//For example, `d` now equals `0`
if (isEnum)
d = Enum.ToObject(propertyInfo.PropertyType, (int)d);
//I can see from debugger that `d` now equals `Zero`
propertyInfo.SetValue(myObject, d);
//Exception: Object does not match target type
关于为什么会发生这种情况的任何想法?