コードの自動生成

C#Genericsを使えるようになるまでは値型を諦めるか、値型毎に専用のコレクションをこさえることになります。前者を選ぶと話が終わってしまうので後者について見当します。(^^;
さて、値型毎にコレクションを作るには、ちまちまコーディングしても良いですが、基本的に機械作業になるので自動化を図りたいです。もちろん、こんなこと考える人は沢山いるわけで、既にツールがあったりします。例えば、これとか。ところで、ソースコードC#1.0/2.0で出来るだけ共通にしたい場合、どーすれば良いでしょうか。簡単なのはC#1.0の機能しか使わないことですが、Genericsが使えればやっぱ使いたいのが人情です(笑)。

class Statck<T> {}

void Method() {
  Stack<int> s = new Stack<int>();
}

こんなのでしたら簡単なツールこさえてStack→IntStack、T→intと置換してあげれば良いです。しかし、実際にはStackは色々なファイルで使われるだろうし、型もintだけとは限りません。となると、ビルド前に全てのソースファイルから実体化させるべき型を掻き集めてきて、それぞれの型についてクラスを生成(IntStack,StringStack等)、次に各ソースの該当箇所を置換となります。しかし、ここでソースコードを直接書き換えるとC#2.0でコンパイルするときに困ってしまうので、別ファイルに書き出すことにします。で、最後に生成されたソースコード一式でビルドすることになります。自作するとしたらこんな方向になりそーですがイマイチ気乗りしません。他に良いアイディア無いでしょうか・・・?