我想知道是否有一种方法可以建立一个可以接受多个通用参数的类
在编译时不知道的
class Something<T,V,U>
此示例显示了一个期望在运行时接收3个通用参数的类。
我正在寻找一种指定类的方法,该类除了数量可变的多个参数外
沿线的东西
class Something<T[]>
我以后可以使用反射来暴露
Type [] types = GetType().GetGenericArguments();
最佳答案
你可以上课-一种
public static class TypeHelper
{
public static IEnumerable<Type> GetTypeCombination(this Type type)
{
if (type.IsGenericType && type.GetGenericTypeDefinition() == typeof(T<,>))
return type.GetGenericArguments().SelectMany(GetTypeCombination);
return new Type[] { type };
}
}
public class T<T1, T2>
{
public static IEnumerable<Type> GetTypeCombination()
{
return typeof(T1).GetTypeCombination()
.Concat(typeof(T2).GetTypeCombination());
}
}
并将其用作
var list = T<int, T<string, int[]>>.GetTypeCombination().ToList();
获取(通过)类型的动态列表-不确定这是最好的方法