我在A班有个方法
public IList<T> MyMethod<T>() where T:AObject
我想在另一个泛型类B中调用此方法。此T没有任何约束。
public mehtodInClassB(){
if (typeof(AObject)==typeof(T))
{
//Compile error here, how can I cast the T to a AObject Type
//Get the MyMethod data
A a = new A();
a.MyMethod<T>();
}
}
类C继承自类AObject。
B<C> b = new B<C>();
b.mehtodInClassB()
有什么想法吗?
URS提醒后…更新:
对.我真正想做的是
typeof(AObject).IsAssignableFrom(typeof(T))
不
typeof(AObject)==typeof(T))
最佳答案
如果您知道T
是一个AObject
,为什么不提供AObject
作为MyMethod
的类型参数:
if (typeof(AObject).IsAssignableFrom(typeof(T)))
{
//Compile error here, how can I cast the T to a AObject Type
//Get the MyMethod data
d.MyMethod<AObject>();
}
如果提供
AObject
作为类型参数不是一个选项,则必须在调用方法中对T
施加相同的约束:void Caller<T>() where T: AObject
{
// ...
d.MyMethod<T>();
// ...
}