I work on a code that compares structures of classes in C# as a part of a serialization library.
I stumbled upon a problem with the particular generic class setup:
class B<Y> where Y: B<Y> {}
class A<X>: B<A<X>> {}
I already have objects of type Type that represents open generic type B<> and open generic type A<>. Now I would like to create open generic type B<A<>> that I will use as a template for other closed generic types. In order to do that I tried using MakeGenericType method:
typeof(B<>).MakeGenericType(typeof(A<>))
but it ended up with an exception about "Invalid generic arguments". It makes sense as type A<> does not meet a constraint of Y generic argument.
I know that I can obtain the type I want by calling typeof(A<>).BaseType, but it does not fit the flow of my algorithm and seems not to be a general solution to the problem. My question is: is there a way to create an open type B<A<>> ignoring/deferring constraint check to the moment of creating a closed version of it?
Aucun commentaire:
Enregistrer un commentaire