我想創建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