C# 如何获取C中打开泛型上的类型参数数#
简言之,这很好地解释了我的问题C# 如何获取C中打开泛型上的类型参数数#,c#,generics,reflection,C#,Generics,Reflection,简言之,这很好地解释了我的问题 class Foo<T> { ... } var type = typeof(Foo<>); <-- runtime provides a RuntimeType object instance in my real code var paramCount = ((RuntimeType)type).GetGenericParameters().Count; <-- I need this 这是一个相当大的假设,只是感觉恶心。
class Foo<T> { ... }
var type = typeof(Foo<>); <-- runtime provides a RuntimeType object instance in my real code
var paramCount = ((RuntimeType)type).GetGenericParameters().Count; <-- I need this
这是一个相当大的假设,只是感觉恶心。
也就是说。。。我已经在这个世界上了。。。所以它的本质是令人讨厌的
当然有更好的方法可以做到这一点吗?如果您使用的是完整的.NET,那么您可以简单地:
int num = type.GetGenericArguments().Length;
如果您使用的是.NET Core,请参阅:
如果您总是有一个开放的通用代码,那么显然:
int num = type.GetTypeInfo().GenericTypeParameters.Length;
@如果您使用的是完整的.NET,则
type.GetGenericArguments().Length代码>将起作用。你不需要施法。类型
变量应声明为类型
<代码>运行时类型
是您可以忽略的内部内容。啊,很好。谢谢男人:)。。。只需要拉进系统。反射。。。是的,我认为这只是一个完整的.Net的东西。。。对Core不起作用
TypeInfo typeInfo = type.GetTypeInfo();
int num = typeInfo.IsGenericTypeDefinition
? typeInfo.GenericTypeParameters.Length
: typeInfo.GenericTypeArguments.Length;
int num = type.GetTypeInfo().GenericTypeParameters.Length;