Код: Выделить всё
...
IL_0019: ldloc.3
IL_001a: ldfld !0 valuetype [System.Runtime]System.ValueTuple`3::Item1
IL_001f: ldloc.s 4
IL_0021: ldfld !0 valuetype [System.Runtime]System.ValueTuple`3::Item1
IL_0026: bne.un.s IL_0048
...
В настоящее время я использую следующий простой код, где tupleType — это сконструированный универсальный тип, как указано выше.
Код: Выделить всё
foreach (FieldInfo field in tupleType.GetFields())
{
il.Emit(OpCodes.Ldloc, tuple1Index);
il.Emit(OpCodes.Ldfld, field);
il.Emit(OpCodes.Ldloc, tuple2Index);
il.Emit(OpCodes.Ldfld, field);
...
}
Код: Выделить всё
ldfld int32 valuetype [System.Private.CoreLib]System.ValueTuple`3::Item1
Код: Выделить всё
Unhandled exception. System.MissingFieldException: Field not found: 'System.ValueTuple`3.Item1'.
at Program.Main(String[])
Как получить поле из сконструированного универсального типа, возвращаемый тип которого в IL остается аргументом типа, а не заполненным типом?
Как получить поле из сконструированного универсального типа, возвращаемый тип которого в IL остается аргументом типа, а не заполненным типом?
Подробнее здесь: https://stackoverflow.com/questions/792 ... a-closed-g
Мобильная версия