我在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>();

    // ...
}

10-06 12:17