4

カスタムメッセージングプロトコルの事実上逆シリアル化クラスとは何かがあります。このクラスは、リフレクションを使用して、クラスのプロパティとプロトコルマッピングの属性を検査します。これは、値が符号なし整数(32または64)であり、整数(32または64)にキャストされている場合を除いて正常に機能しています。

プロパティタイプをテストし(たとえばif x is int)、これらの数値タイプのコードを分岐してuncheckedブロック内でキャストを実行することもできますが、コードを単純に保ち、既存のConvert.ChangeType(value, convertToType)ロジックを使用する方法を見つけたいと思います。このコンバーターに数値オーバーフローを無視させる方法はありますか?または、実行時にのみ認識される型を使用してキャストする代わりの方法はありますか?

注意:ここには修正が必要な根本的な原因があることを認識していますが、現在、データのソース、トランスポートタイプ、またはメッセージングプロトコルを変更することはできません。

4

1 に答える 1

1

isキーワードをオンにしたくないのは、開発者の本能だと思います。とにかくそれをすることをお勧めします。もしあなたがリフレクションを使っていないのなら、導入の検討は理解できるのですが、すでにリフレクションを使っているのであれば...

uint が int.MaxValue よりも大きくならないことがわかっている (または推測している) 場合は、 を使用できますConvert.ToInt32。念のため、「OverflowExceptions」もキャッチする必要があります。

于 2012-12-17T03:14:23.647 に答える