我想解释一下这个问题的标题。
我有基类
public class BaseClass { /* stuff */ }
和其他两个继承的类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
会出现转换错误,然后else
就可以了。