QA@IT

ジェネリックの型パラメータは派生元に

3226 PV

お世話になります。
public class Foo : Hoge, ICloneable
のHogeとなっている部分を汎用化したいと思いまして、
public class Foo< T > : T, ICloneable
のような感じでTにHogeを指定して、それを派生元にしたいのですが
どのように実装すればよろしいのでしょうか?
ちなみに上記ですと
error CS0689: 'T' は型パラメーターであるため、派生させることはできません。
となってしまいます。このエラーの通りできないのでしょうか?

  • どういう事を実現したかったのでしょうか。例えばそれが通ったとして、その先にどういうコードを書きたかったか、なんとなくでも良いので教えてもらえますか? -
  • プログラムを引き継いだのですが、FooではHoge内の
    プロパティ利用するかしないかを管理しています。
    別のところでFooなインスタンスを渡すと管理された
    Hogeのプロパティを使うような挙動です。
    今まではHoge系の数だけ派生したFoo系クラスが
    存在していました。それをまとめられないかと
    質問させていただきました。
    他の方に提示していただいた方法を検討中です。
    -

回答

public class Foo : Hoge


Hogeから派生したFooですが

public class Foo< T > : T


Tから派生したFooということになりますが
Tがなんだか分からないものなのだからそれは
無理だと思いませんか?

もしやるなら
Fooの中にT hoge;を宣言してhogeをインスタンス化
したものを使用するという方法にすると良いのではないでしょうか?

編集 履歴 (0)
  • 早々のレスありがとうございます。
    言葉にしていただけると分かります。
    いろいろ実験して調べてみます。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。