我有什么实际上是自定义消息协议的反序列化类。该类使用反射来检查类的属性和协议映射的属性。这是工作正常,除非值是一个无符号整数(32或64)并被转换为一个整数(32或64)。Convert.ChangeType可以在未经检查的环境中运行吗?
我可以测试(例如if x is int
)的属性类型和分支,这些数字类型在unchecked
块进行类型转换的代码,但我宁愿保持代码的简单,找到一种方法,使用现有的Convert.ChangeType(value, convertToType)
逻辑。有没有办法让这个转换器忽略数字溢出?还是有一种替代方法只使用运行时已知的类型进行投射?
注意:我知道这里有一个根本原因需要修复,但我们目前没有能力更改数据源,传输类型或消息传递协议。
我们在讨论什么版本的框架? –
你是否期待在你的应用程序中'uint'的值不会大于'int.MaxValue'? –
不是我知道的..但是你试图把它抽象出来会得到什么?我会说你失去了看到发生什么事的时候你真的应该知道的能力。 –