2009-06-16 5 views
3

j'ai un type générique:appel Type.MakeGenericType() avec des arguments nuls

MyType<T1, T2, T3> 

et je veux faire:

typeof(MyType<,,>).MakeGenericType(new [] { null, null, string}); 

si je me retrouve avec:

MyType<,,string> 

Mais, vous ne pouvez pas passer des types null dans MakeGenericType (voir: http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx).

Comment puis-je y parvenir?

Merci

+0

Pourquoi voulez-vous faire? Est-ce que vous ajoutez dans les autres types plus tard? – thecoop

+0

Je dois prendre en charge les types génériques ouverts, j'ai des règles à appliquer à MyTypes en fonction de leurs arguments génériques. donc un MyType obtiendrait la règle MyType <,,z> appliquée à elle. –

Répondre

5

Ok j'ai évité comme ceci:

var args = typeof(MyType<,,>).GetGenericArguments(); 
args[2] = typeof(string); 
typeof(MyType<,,>).MakeGenericType(args); 
Questions connexes