Ich möchte Func Typ mit angegebenen generischen Typargumente, so ähnlich wie, aber nur mit einer AussageWie man Art von Funktion mit spezifizierten allgemeinen Typen schafft?
Type create_type(Type[] types)
{
return typeof(Func<>).MakeGenericType(types); // error if types.Length != 1
return typeof(Func<,>).MakeGenericType(types); // error if types.Length != 2
return typeof(Func<,,>).MakeGenericType(types); // error if types.Length != 3
return typeof(Func<,,,>).MakeGenericType(types); // error if types.Length != 4
// ....
}
Natürlich schaffen, ich auxuliary Array erstellen:
var func_types = new Type[] { typeof(Func<>), typeof(Func<,>) , //...}
Aber diese Lösung scheint zu hässlich für mich
Hinweis: Array von Typen kann lang sein (bis zu 15) und ich möchte elegante Lösung finden. Leider erstelle ich solche Art von Metadaten, in einer anderen Sprache geschrieben
die glänzende Antwort ist! – LmTinyToon
Dann ziehe ich alle meine Kommentare oben über hässlichen Code zurück, der benötigt wird :) Stellt sich heraus, es ist nur eine Frage von wer diesen hässlichen oder gewundenen Code schreiben muss - https://referencesource.microsoft.com/#System.Core/Microsoft /Scripting/Compiler/DelegateHelpers.Generated.cs,227 –
@Charpie, Gibt es ein Analogon einer solchen Methode für Tupel-Typ? – LmTinyToon