方法System.Type.GetGenericArguments()
是.NETStandard 1.0中的'missing',我认为TypeInfo.GenericTypeArguments
替代了GetGenericArguments()
,但不幸的是,当提供开放通用类型时,它们的行为会有所不同。以下面的代码为例:
Type type = typeof(ICommandHandler<>);
type.GetGenericArguments(); // return { TCommand }
type.GetTypeInfo().GenericTypeArguments; // returns empty array
尽管
GetGenericArguments()
方法返回泛型类型参数TCommand
,但GenericTypeArguments
只是为相同的开放泛型类型返回一个空数组。GenericTypeArguments
的确切行为是什么?在.NET Standard 1.0中等效于Type.GetGenericArguments()
? 最佳答案
经过进一步调查后,如果类型不是通用类型定义,则Type.GenericTypeArguments
似乎仅返回任何内容。另一方面,TypeInfo.GenericTypeParameters
仅在类型为泛型类型定义时返回任何值。
以下代码模仿了Type.GetGenericArguments()
的行为:
type.GetTypeInfo().IsGenericTypeDefinition
? type.GetTypeInfo().GenericTypeParameters
: type.GetTypeInfo().GenericTypeArguments;
关于c# - .NETStandard 1.0/.NET Core中的Type.GetGenericArguments()等效项是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39129537/