假設我有一個通用方法:
private static void GenericMethod<T1, T2>()
where T1 : SomeClass1
where T2 : SomeClass2
{
// Stuff
}
而且我有映射enum
到某種型別的結構,如下所示:
private static Dictionary<Enum, (Type, Type)> mappings =
new()
{
{
Enum.Value,
(typeof(DerivedFromSomeClass1), typeof(DerivedFromSomeClass2))
}
};
現在我想呼叫GenericMethod
并使用映射中的型別來替代 to T1, T2
,如下所示:
var mappingType1 = mappings[enum].Item1;
var mappingType2 = mappings[enum].Item2;
GenericMethod<mappingType1, mappingType2>();
顯然你不能這樣做,但是......有沒有辦法實作我的想法?就像我想將某些型別映射到列舉,然后將列舉中的型別用作方法的泛型型別(T
)?
uj5u.com熱心網友回復:
好的,事實證明它實際上相當簡單。我是這樣做的:
var mappingType1 = mappings[platform.Type].Item1;
var mappingType2 = mappings[platform.Type].Item2;
var method = typeof(Class).GetMethod(nameof(GenericMethod), BindingFlags.NonPublic | BindingFlags.Static);
var genericMethod = method.MakeGenericMethod(mappingType1, mappingType2);
genericMethod.Invoke(null, null);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/470415.html
下一篇:泛型函式的回傳型別