2012-04-09 20 views
1

私は2つのクラスを持っています:スーパークラスと派生サブクラス:スーパークラス。スーパークラスの汎用メソッドからサブクラスの汎用メソッドを呼び出す

ご覧のとおり、私はSuperclassの汎用メソッドからSubclassを呼び出す必要があります。しかし、コンパイラは私がそれをすることはできないと言います。

The type 'T' cannot be used as type parameter 
'T' in the generic type or method 'DoSmth2<T>(T)'. 
There is no implicit reference conversion from 'T' to 'Subclass' 

私は.Net 3.5を使用しています。私は私が上に書いたようにそれをすることができないことを理解しますが、それを行う方法はありますか?

答えて

3

あなたはそうする必要はありません。

public void DoSmth<T>(T obj) 
    where T : Superclass 
{ 

    //untested but something like this 
    Subclass obj2 = (obj as Subclass); 
    if(obj2 != null) 
    { 
     DoSmth2(obj2); 
    } 
    //... 
} 
+0

このように、最初に「オブジェクト」にキャストする必要があります。Subclass obj2 =(サブクラス)(オブジェクト)obj; –

+0

私は最後の編集がそれを満たすと思います。 –

+0

はい、それは動作します。どうもありがとうございました。 – mao

関連する問題