2009-06-16 5 views
3

ich einen generischen Typ haben:Berufung Type.MakeGenericType() mit null Argumente

MyType<T1, T2, T3> 

und ich möchte, dies zu tun:

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

so dass ich am Ende mit:

MyType<,,string> 

Sie können jedoch keine Null-Typen in MakeGenericType übergeben (siehe: http://msdn.microsoft.com/en-us/library/system.type.makegenerictype.aspx).

Wie erreiche ich das?

Dank

+0

Warum wollen Sie dies tun wollen? Fügen Sie die anderen Typen später hinzu? – thecoop

+0

Ich muss offene generische Typen unterstützen, ich habe Regeln, die auf MyTypes basierend auf ihren generischen Argumenten angewendet werden. so ein MyType würde die Mytype <,,z> Regel darauf angewendet bekommen. –

Antwort

5

Ok ich es wie folgt vermieden:

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