在 C# 中,有没有办法在编译期间将一种泛型类型映射到另一种泛型类型?我想避免对这个问题使用反射。例如,假设我想让 TypeA 映射到 TypeB,并且具有类似于以下代码的工作:
private void List<U> GetItemList<T>() where T : class <== U is the destination type obtained by the compile-time mapping from T to U
{
Type U = GetMappedType(typeof(T)) <=== this needs to happen during compile-time
List<U> returnList = Session.QueryOver<U>().List();
return returnList;
}
private Type GetMappedType(Type sourceType)
{
if (sourceType == typeof(TypeA))
return typeof(TypeB);
}
我意识到,由于我使用方法调用来映射类型,因此它不会在编译期间进行映射,但是是否有另一种方法可以仅在编译期间完成我想要实现的目标?我知道上面的代码不正确,但我希望你能看到我想要的。
简而言之,我想知道是否有办法将一种类型映射到另一种类型并让 C# 编译器知道类型映射,以便目标类型可以用作任何采用通用类型参数的方法的通用类型参数. 我想避免使用反射。
作为一个附带问题,如果我确实为此使用反射,它会使实现非常耗费资源吗?