ぐは(ノД`) C# generics型を異なる型で継承すると共通型にキャストできない

genericsなベースクラス型から型指定した派生クラスを作成して、でもやぱりベースクラス型に定義してある共通メソッドを、共通の型キャストで呼び出したいと思った。

こんな感じで。

派生クラスをごっちゃにしたインスタンスから、BaseClass.Hello()メソッドを呼び出したいが、型キャストエラーにはばまれる。

 

ただし単発ならばこのような型キャストできる。

 

しかしgenercsの型が全く同一でないと、キャストは失敗する。

これは型キャストエラーになる

 
 

ではどうすればごっちゃにしたインスタンスからどうすればBaseClass.Hello()メソッドを呼べるようにできるか?

 

考えたあげく、インターフェイスを使うことにした。

 

これならgenericsに指定する型も関係無しに、型変換できる。

コメントを残す

トラックバック: http://pgnote.net/wp-trackback.php?p=1089