我有两个可以接受通用类型参数的通用函数,并且我有三个主要类和很多子类

BaseNormalSpecial
SpecialNormalbasespecialnormal

我的功能如下

public void doWork<T>() where T:Base
{
    list<T> = 
        typeof(T) == typeof(Special) ?
        (List<T>)Convert.ChangeType(GetObjectsSelectedFromSpecial(),typeof(List<T>)) : // this is very ugly
        (List<T>)GetObjectsSelectedFromNormal<T>(); // this will not compile
}
   
GetObjectsSelectedFromSpecialSpecial
GetObjectsSelectedFromNormalNormal
public List<T> GetObjectsSelectedFromNormal<T>() where T : Normal
{
    ...
    ExternalFunction<T>(); // this needs T to be of type `Normal`
    ...
}

但在排队

... : (List<T>)GetObjectsSelectedFromNormal<T>();

我得到了错误

在通用类型或方法“ myProject.GetObjectsSelectedFromNormal()”中,类型“ T”不能用作类型参数“ T”。没有从“ T”到“ Normal”的隐式引用转换。
TTT
BaseNormalSpecial