gpt4 book ai didi

c# - Convert.ChangeType 可以在未经检查的上下文中运行吗?

转载 作者:行者123 更新时间:2023-11-30 12:48:33 25 4
gpt4 key购买 nike

我有一个有效的自定义消息协议(protocol)的反序列化类。此类使用反射来检查类的属性和协议(protocol)映射的属性。这工作正常,除非值是无符号整数(32 或 64)并且正在转换为整数(32 或 64)。

我可以测试(例如 if x is int)属性类型并分支这些数字类型的代码以在 unchecked block 中执行强制转换,但我会而是保持代码简单并找到一种方法来使用现有的 Convert.ChangeType(value, convertToType) 逻辑。有没有办法让这个转换器忽略数字溢出?或者是否有替代方法来使用仅在运行时已知的类型进行转换?

注意:我意识到这里有一个根本原因需要修复,但我们目前无法更改数据源、传输类型或消息传递协议(protocol)。

最佳答案

我想这是开发人员的本能,不想打开 is 关键字,我自己也去过那里。无论如何,我建议这样做。如果你没有使用反射,我会理解引入它的深思熟虑,但如果你已经在使用反射了......

如果您知道(或猜测)uint 不会大于 int.MaxValue,那么您可以使用 Convert.ToInt32。您还应该捕获“OverflowExceptions”,以防万一。

关于c# - Convert.ChangeType 可以在未经检查的上下文中运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13907702/

25 4 0
文章推荐: c# - 将 List 添加到 EF