我想屬性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