我想属性myProperty的与参数ID分配。检查对象的类型,其中,对象可以是一个int(32或64)
MyProperty属性的类型为Object,它可以是Int32或Int64。
如何检查MyProperty字段的类型,然后根据基础类型将其分配为id或id cast作为int?
public void MyMethod(long id) {
myClass.MyProperty
= (typeof(MyProperty) == typeof(long))
? id
: (int)id;
}
为此,使用Convert.ChangeType()会不会更容易/更清晰? 'myClass.MyProperty = Convert.ChangeType(id,myClass.MyProperty.GetType());' – LBushkin 2010-07-07 19:33:53
@LBushkin:嗯......可能。没有一种方式感觉特别好,说实话... – 2010-07-07 19:38:00
是的。 OP的要求有点奇怪 - 但似乎可以将它们提炼为:*“将值分配给MyProperty时,将该值转换为与MyProperty相同的类型” - - ChangeType调用捕获的很好。它避免了对多个地方的兼容类型的假设......如果分配的MyProperty值已经违反了预期的不变性,那么可能会传播错误。 – LBushkin 2010-07-07 20:09:39