partial とデザイナによる自動生成
C#での、DataSet群(DataTable, DataRowなど)は、型安全を捨ててるけど、現実的に効果のある解だと思います。しかし、VisualStudioのデザインツールから自動生成するようなクラスDataAdapterとか型付きDataSetは、結構ツラい。
意図と反する自動生成が行なわれた場合(例えば、DataAdapterのFillメソッドの引数を入力したSQLから、パラメータを自動生成したりするんですが、勝手に間違ったC#の型にマッピングして型安全なコードを吐く)には、自動生成されたコードを修正しなければならなくなる。結局微妙な抽象化がされたクラスのコードを沢山見なきゃならないなら、最初から、SqlCommandで、普通にSql発行した方が早いくらいかもしれない。OOPマンセーな人は、この辺の解析作業自体が好きかもしれない。
苦労して自動生成されたクラスをカスタマイズした後に、デザインツールを開いて、編集したつもりじゃないのに更新されてて保存しちゃった場合、さっきの努力は、消されます。(svnから持ってくればいいんですが。)その危険を回避するために、VS2005(.net2.0)から partial が使えるようになるという拡張がされました。
http://msdn2.microsoft.com/ja-jp/library/wbx7zzdd(VS.80).aspx
OOP的には禁じ手みたいな機能だと思います。でも、たかがデキの悪いIDEのために、言語仕様まで変えちゃう(しかも改悪とも取れるような拡張)のはどうなんだろう。
自分のソースをpartialを使って上書きされないように実装しても、なんとなくスッキリしないです。
C#を正しく使って効率を上げるのは(自分には)非常に難しいと思った。