我想知道是否有一种方法可以建立一个可以接受多个通用参数的类
在编译时不知道的

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

获取(通过)类型的动态列表-不确定这是最好的方法

09-07 09:32