私は、指定されたジェネリック型引数でそのような何かをのFunc型を作成したいのですが、一つだけの文もちろん指定したジェネリックタイプでfuncのタイプを作成するにはどうすればよいですか?
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
// ....
}
で、私はauxuliary配列を作成することができます
var func_types = new Type[] { typeof(Func<>), typeof(Func<,>) , //...}
しかし、このソリューションを
注:配列の型は長くても(最大15)、私は優雅な解決策を見つけたいと思っています。残念ながら、別の言語で書かれたメタデータからそのような型を作成しています。
華麗な答えです! – LmTinyToon
その後、私は上記の醜いコードが必要であるという上記のコメントをすべて撤回します:)それは、誰がその醜いコードまたは畳み込まれたコードを書く必要があるのだろうという疑問を引き起こします - https://referencesource.microsoft.com/#System.Core/Microsoft /Scripting/Compiler/DelegateHelpers.Generated.cs,227 –
@CSharpie、そのようなタプル型のメソッドのいくつかの類似点はありますか? – LmTinyToon