請看看下面的代碼:使用反射在運行時轉換類型?
var val1 = ExtractValue(firstParam);
var val2 = ExtractValue(secondParam);
var type1 = val1.GetType();
var type2 = val2.GetType();
TypeConverter converter1 = TypeDescriptor.GetConverter(type1);
TypeConverter converter2 = TypeDescriptor.GetConverter(type2);
if (converter1 != null && converter1.CanConvertFrom(type2))
{
var temp = converter1.ConvertFrom(val2);
return val1.Equals(temp);
}
return false;
這對我來說是一個謎,當我用「INT」和枚舉對象試試這個代碼不返回true。我甚至在即時窗口中嘗試過「val1.Equals((int)(val2))」,結果是true,但converter1.CanConvertFrom(type2)仍然是false。
您能幫我解答嗎?有什麼我失蹤了嗎?
感謝
Enum是int類型的,它們可以相互轉換。 – affan
你假設每種類型都有一個[TypeConverter]。事實並非如此,只有少數人這樣做。 –
@affan,Enum的默認支持類型是'int',但它不一定是;例如,它也可能很長,在這種情況下,它可能在分配給int時溢出。 –