https://en.wikipedia.org/wiki/.NET_Micro_Framework#History
>On 23 January 2017, after numerous attempts to revive .NET Microframework project and bring it to community governance and a period of work "in the dark", a group of embedded systems developers publicly announced .NET nanoFramework as spin-off of .NET Micro Framework.
Check out [Meadow](https://www.wildernesslabs.co/), though. Has both Generics and F# support. :)
It's reasonable to ask if the same is done with NanoFramework.
On the other hand, C#, F# or Rust monomorphise (have reified generics).
That means, that if I have a polymorphic (generic) class `MyClassA<T>`, the compiler (regardless if it is JIT in the runtime as in C#, or AOT as in Rust) monomorphises (reifies) `MyClassA` for each instantiation of `T`. So `MyClassA<MyClassB>` and `MyClassA<MyClassC>` are distinct classes.
For this reason, co-/contra-variance in C# works only for interfaces. Type parameters in classes are invariant. `MyClassA<MyClassB>` and `MyClassA<MyClassC>` are distinct classes, neither sub-/super-class of the other, even if `MyClassB` were a subclass of `MyClassC`.
In C# and Java reflection is used extensively and the generics still exist in C# when reflecting they are gone in Java.