方法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/

10-11 06:26