0

リフレクションなどを介して .net のフィールド/プロパティのデータ型を変更することは可能ですか?

厳密に型指定されたデータセットに問題があるため、この機能を探しています。厳密に型指定されたデータセットでは、null 許容型のデータ型を柔軟に変更できません。関連リンクはこちらをご覧ください。したがって、実行時にデータ型を変更する可能性がある場合、この問題は解消されます。また、追加します。このMSDNリンクに従って; Microsoft チームは、このサポートを提供することにあまり熱心ではありません。

4

3 に答える 3

1

まず、これはバグではありません。これは、dbnull (未知の値) と null (どこにも指していない参照) の違いによるものです。Connect や他の場所での不透明で役に立たない回答の一部から判断すると、Microsoft 自体がそれを説明するのが苦手なように見えるという事実によって、事態は悪化しています。

達成しようとしていることに応じて、この問題にはいくつかの解決策があります。データ バインディングを使用している場合、バインディング メカニズムはほとんどの場合、これを透過的に処理します。コードでデータセットを直接ヒットしている場合、デザイナーは Isxxxnull / setxxxnull メソッドを作成して、使用する前に値を確認できるようにします。最後に、データ型を system.object に変更するか、必要に応じてデザイナで NullValue を上書きして別の値を入力できます。ただし、その値がデータ型に対して有効である限り、たとえば int の場合は 0 または -1 です。

于 2013-10-15T18:25:09.693 に答える
0

Datasets はかなり古く、.net v1.0 に由来します。Microsoft が変更や追加を行うことは決してありません。一般に、より良いアプローチは、強く型付けされた POCO です。すべて同じバッキング ストレージ (オブジェクト型) を使用する複数の厳密に型指定されたプロパティを作成することもできます。対応するプロパティにアクセスする前に、正しい型をテストする必要があります。

于 2013-10-15T17:33:57.737 に答える