Ste*_*ven 14 .net c# .net-core .net-standard
这个方法System.Type.GetGenericArguments()是从.NETStandard 1.0中"丢失"的,我认为它TypeInfo.GenericTypeArguments是替代品GetGenericArguments(),但不幸的是,它们在提供开放泛型类型时表现不同.以下面的代码为例:
Type type = typeof(ICommandHandler<>);
type.GetGenericArguments(); // return { TCommand }
type.GetTypeInfo().GenericTypeArguments; // returns empty array
Run Code Online (Sandbox Code Playgroud)
当该GetGenericArguments()方法返回泛型类型参数时TCommand,GenericTypeArguments只返回一个相同的open-generic类型的空数组.
.NET Standard 1.0 的确切行为GenericTypeArguments和等价物是Type.GetGenericArguments()什么?
Ste*_*ven 12
在进一步调查之后,Type.GenericTypeArguments如果类型不是泛型类型定义,似乎只返回任何内容.在TypeInfo.GenericTypeParameters另一方面,只有当类型是泛型类型定义返回任何.
以下代码模仿以下行为Type.GetGenericArguments():
type.GetTypeInfo().IsGenericTypeDefinition
? type.GetTypeInfo().GenericTypeParameters
: type.GetTypeInfo().GenericTypeArguments;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2074 次 |
| 最近记录: |