- ふらっと C#,C♯,C#(初心者用) Part116 [転載禁止]©2ch.net
679 :デフォルトの名無しさん[sage]:2015/09/12(土) 22:57:29.52 ID:1g/1FxHg - 素人だけど、そこはサニタイズの一環だと思う。
旧コードだと記述されていないプロパティには値が代入されない。 新コードだと常に全てに代入される。 もし旧コード側で「内部的」なプロパティを持っていて、 それがそこに記述されていないことにより「内部的」であることを保証している場合、 サーバ側でDBの変更があり、名前が偶々被ったらいきなりバグる。 例えば、 id2 というプロパティを内部的にだけ使用していたつもりが、DB側で追加されたとか。 ただ、SampleRecClassはDB側のデータのみとして分離されていれば、この問題は発生しないはず。(※) 或いは、今ある全てのプロパティに対して代入が記述されているのなら、大丈夫。 後は旧コードは必ず固定的にキャストされていること。 SQLを使ったことがないから戻り値とかの知識がないのだけど、SQL側から型付きで返ってくるのなら、 新コードだとDB側の型と一致してしまう。 これだと、DB側で型が変更された時にいきなりバグる可能性がある。 (ただしこの場合はどうせ書き直さなければならないけど) 後は型が全部Objectになってしまうのも少し引っかかるけど、自分だけで閉じているのであれば問題ないはず。 (俺はこの点についてはC#の知識が足りないので断定は出来ない。 VC++ならネイティブ型にキャストとしている場合はアンマネージド側で使っている可能性があるのでやや危険。 ただC#ではこういうケースは無いはず。) 100行もあっても見にくいだけだし、※を確認しながらReflectionにするのはありだと思う。 (ただし素人なのでReflectionを積極的に使うべきなのかは知らない。というか、消極的に使う印象がある) とはいえ、旧コードはDB変更の影響を全く受けないようになっているから、 この点は注意しておいた方がいい。
|
|