http://blogs.wankuma.com/rti/archive/2007/04/04/70109.aspx
部分型定義
http://blogs.wankuma.com/rti/archive/2007/04/05/70261.aspx
部分型定義(その2)
http://blogs.wankuma.com/rti/archive/2007/04/11/70940.aspx
部分型定義(その3)
の続きです。
意外なことに、
デザイナ
以外ではあまり使われていない partial class ですが、ジェネリックを用いた場合はどうなるのでしょうか?
部分型定義(その3)の C# のコードを以下のようにしてみます。
public partial class Test<T> { }
partial class Test { }
partial class Test { }
そして、クラスビューで確認してみると、Test<T> と Test という別のクラスとして表示されました。
今まで意識していなかったのですが、ジェネリックの記述はクラス名(メソッドであればメソッド名)の一部として捉えられるようです。
確かに、テキストエディタ上で表示される様々なメッセージでは、ジェネリック込みで表示されていました。
つまり、partial class でジェネリックを用いる場合は、以下のようにしなければなりません。
public partial class Test<T> { }
partial class Test<T> { }
partial class Test<T> { }
もちろん、これは partial class の一部がデザイナで生成されたコードであっても同様です。
僕は、よくカスタムコントロールにジェネリックを用いるのですが、この場合はデザイナが生成したコードのクラス名も変更しています。