[英]Use Type as Generic Method Parameter
假设我有一个通用方法:
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
并使用映射中的类型代替T1, T2
,如下所示:
var mappingType1 = mappings[enum].Item1;
var mappingType2 = mappings[enum].Item2;
GenericMethod<mappingType1, mappingType2>();
显然你不能这样做,但是......有没有办法实现我的想法? 就像我想 map 枚举一些类型,然后使用枚举中的类型作为方法的通用类型( T
)?
好的,事实证明它实际上相当简单。 我是这样做的:
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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.