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 */.