我有什麼實際上是自定義消息協議的反序列化類。該類使用反射來檢查類的屬性和協議映射的屬性。這是工作正常,除非值是一個無符號整數(32或64)並被轉換爲一個整數(32或64)。Convert.ChangeType可以在未經檢查的環境中運行嗎?
我可以測試(例如if x is int
)的屬性類型和分支,這些數字類型在unchecked
塊進行類型轉換的代碼,但我寧願保持代碼的簡單,找到一種方法,使用現有的Convert.ChangeType(value, convertToType)
邏輯。有沒有辦法讓這個轉換器忽略數字溢出?還是有一種替代方法只使用運行時已知的類型進行投射?
注意:我知道這裏有一個根本原因需要修復,但我們目前沒有能力更改數據源,傳輸類型或消息傳遞協議。
我們在討論什麼版本的框架? –
你是否期待在你的應用程序中'uint'的值不會大於'int.MaxValue'? –
不是我知道的..但是你試圖把它抽象出來會得到什麼?我會說你失去了看到發生什麼事的時候你真的應該知道的能力。 –