人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

C#で継承元を指定したジェネリッククラスを作成したいです。

System.Windows.FormsのPanelとLabelを継承したカスタムコントロール(PanelEx、LabelEx)を作成していますが、それぞれに共通した処理があるため、切り出して別クラス(classLib)に実装したいと考えています。

この共通した処理の中にはPanelとLabelの継承元であるControlのprotectedメソッドを呼び出す処理もあるためclassLibの継承元を指定して宣言したいのです。

つまり以下のようなことがしたいです。
class classLib<T> : T
class PanelEx : classLib<Panel>
class LabelEx : classLib<Label>

しかし、ジェネリックの型パラメータは派生させることができず困っています。
こういうことはそもそもできないのでしょうか?それとも別の方法で実現できる手段が提供されているのでしょうか?


●質問者: mstkwb
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● heke2mee
●200ポイント

これでどうでしょうか

型パラメータの制約が必要ならば追加してください

 public class TestGen<T> : Control
 {
 public void TestControl()
 {
 base.CreateHandle();
 }
 }

 public class PanelEx : TestGen<Panel>
 { 
 }

 public class LabelEx : TestGen<Label>
 {
 }
◎質問者からの返答

回答有難う御座います。

提示いただいたコードの場合、Tに与えたPanelやLabelの機能はどうなりますか?

両方共Controlの派生クラスになってしまうのではないでしょうか?

関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ