有什么方法可以获取未绑定泛型类型的参数数量?例如:
f(typeof(List<>)) => 1
f(typeof(Dictionary<,>)) => 2
UPD
我知道从Type.Name获取数字,但是也许有一种直接从Type获取的方法
您已经有了通用类型定义。您需要做的就是获取泛型类型参数:
Type.GetGenericArguments().Length
编辑:
正如Sebastian指出的那样,如果您习惯使用C#,这可能会给您带来令人惊讶的结果,因为C#隐藏了“继承”的泛型类型参数。例如:
void Main()
{
typeof(A<>.Nested<>).GetGenericArguments().Dump();
}
public class A<T>
{
public class Nested<V>
{
}
}
会给你的{ typeof(T), typeof(V) }
。.NET类实际上就是这样-这就是您需要引用它的方式,以及如何通过反射创建它的方式。
仅当您要针对编译时未知的类专门使用C#编译器进行操作时,这才有意义。这可能意味着您正在尝试生成C#代码。似乎没有任何支持的方法可以安全地获得C#的行为-您只需要使用一个真正的代码生成器,而不是将字符串拍打在一起就可以了:)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句