int 値のリストを適切な列挙値のリストに変換するために必要なこのメソッドがあります。
問題は、戻り値の型もジェネリックであるため、ジェネリック関数に戻り値の型を指定していないため、Select がオブジェクト型を返していることです。
public static Tout Convert<Tout, Tin>(IList<Tin> reply)
{
Type resultListElementType = typeof(Tout).GetGenericArguments()[0];
MethodInfo setEnumValueMethod = typeof(EnumUtils).GetGenericMethod("SetEnumValue", new Type[] { typeof(Tin) });
MethodInfo setEnumValueGenericMethod = setEnumValueMethod.MakeGenericMethod(resultListElementType, typeof(Tin));
Tout result = (Tout)(dynamic)reply.Select(v => setEnumValueGenericMethod.Invoke(null, new object[] { v })).ToList();
return result;
}
ジェネリック関数のシグネチャは次のとおりです
public static Tout SetEnumValue<Tout, Tin>(Tin value)
ジェネリック関数の戻り値の型も設定できる方法はありますか?