Kov*_*xey 1 .net c# generics reflection
有没有办法获得未绑定泛型类型的参数数量?例如:
f(typeof(List<>)) => 1
f(typeof(Dictionary<,>)) => 2
Run Code Online (Sandbox Code Playgroud)
UPD
我知道从Type.Name获取数字,但也许有一种方法可以直接从Type获取
您已经拥有泛型类型定义.您需要做的就是获取泛型类型参数:
Type.GetGenericArguments().Length
Run Code Online (Sandbox Code Playgroud)
编辑:
正如Sebastian所指出的,如果您习惯于处理C#,这可能会给您带来惊人的结果,因为C#隐藏了"继承"的泛型类型参数.例如:
void Main()
{
typeof(A<>.Nested<>).GetGenericArguments().Dump();
}
public class A<T>
{
public class Nested<V>
{
}
}
Run Code Online (Sandbox Code Playgroud)
会给你的{ typeof(T), typeof(V) }.这就是.NET类的实际情况 - 您需要如何引用它,如何通过反射创建它.
这只有在你特别试图用C#编译器对编译时未知的类做一些事情时才有意义; 这可能意味着您正在尝试生成C#代码.似乎没有任何支持的方式来获得C#安全的行为 - 你只需要使用真正的代码生成器而不是将字符串放在一起:)
| 归档时间: |
|
| 查看次数: |
609 次 |
| 最近记录: |