我有两个可以接受通用类型参数的通用函数,并且我有三个主要类和很多子类
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