C# - static types cannot be used as type arguments

This is deliberate.

Static classes try to prevent inappropriate use, so in almost all situations, you can't use them in situations where you'd normally want an instance of the type... and that includes type arguments.

See section "Static classes" of the C# 6 spec for the very limited set of situations in which you can refer to static class types.


Generics only work with instances, not static classes.


Since static classes cannot be instantiated, it can never create Argument<T> with a static type.