データ用の変な基底クラス使ったりしないで普通のオブジェクト使いましょうっていうのは最近の流行りだからな
そうするとどうしてもそんなのが必要
実際.NETは内部でリフレクション使いまくりだよ
XmlSeriarizerなんかパフォーマンスが重要だから、C#のコードを動的に生成してコンパイルしたりするという
常軌を逸した最適化をする