この質問の私のタイトルを説明したいと思います。
私は基本クラスを持っています
public class BaseClass { /* stuff */ }
そして継承する他の2つのクラスBaseClass
public class Test1: BaseClass { ... }
public class Test2: BaseClass { ... }
それでは、ジェネリッククラスを想定してみましょう(私のプロジェクトでは非常に複雑です)
public GenericClass<T> : IBase<T> where T: BaseClass, Test1, Test2
BaseClass
場合によっては、それ以外の場合Test1
またはのみを使用する必要がありますTest2
。
私は機能を持っています:
public int Create ( T obj){
if( obj is Test1) { return aManager.Create((Test1)obj); } // the cast is OK
else if(obj is Test2) { return bManager.Create((Test2)obj);} // error cast
}
私も持っていaManager.Create (Test1 obj)
ますbManager.Create(Test2 obj)
else
キャストにエラーがあるのはなぜですか?
私の間違いはどこですか?
PS : との間で順序を変更するTest1
とTest2
、最初if
にキャスト エラーが発生し、inelse
は問題ありません。