The method System.Type.GetGenericArguments()
is \'missing\' from .NETStandard 1.0, and I thought that the TypeInfo.GenericTypeArguments
was the replace
After further investigation, the Type.GenericTypeArguments
seems to only return anything if the type isn't a generic type definition. The TypeInfo.GenericTypeParameters
on the other hand, only returns any if the type is a generic type definition.
The following code mimics the behavior of Type.GetGenericArguments()
:
type.GetTypeInfo().IsGenericTypeDefinition
? type.GetTypeInfo().GenericTypeParameters
: type.GetTypeInfo().GenericTypeArguments;
This may turn out to be a comment (not an answer) after all.
On .NET 4.6.1, there are two members on System.Type
, namely:
/* 1 */ type.GetGenericArguments() // returns { TCommand, }
/* 2 */ type.GenericTypeArguments // returns empty array
plus one member on System.Reflection.TypeInfo
, namely:
/* 3 */ type.GetTypeInfo().GenericTypeParameters // returns { TCommand, }
for a total of three members.
However, the two first-mentioned members are also inherited by System.Reflection.TypeInfo
, a subclass of System.Type
.
On .NET 4.6.1, when you do type.GetTypeInfo().GenericTypeArguments
(as in your question), you really call the property on Type
, i.e. my member marked /* 2 */
.