reflector bug IL -> C#/VB/etc.
Je regardais le code de l'Entity Framework quand je suis tombé sur le code suivant :
switch (this.<>1__state)
{
case 3:
case 4:
break;
default:
return;
try
{
}
finally
{
this.<>m__Finally6();
}
break;
}
Cela me paraissant bizarre, j'ai regardé le code VB : pareil. Je me suis donc penché sur l'IL et c'est là que j'ai compris que Reflector m'avais trahi pour la deuxième fois de la journée.
En effet, l'IL est le suivant :
L_0023: ldfld int32 System.Data.EntityModel.SchemaObjectModel.EntityContainerAssociationSet/<get_Ends>d__0::<>1__state
L_0028: stloc.1
L_0029: ldloc.1
L_002a: ldc.i4.3
L_002b: sub
L_002c: switch (L_003a, L_003a)
L_0039: ret
L_003a: leave.s L_0043
L_003c: ldarg.0
L_003d: call instance void System.Data.EntityModel.SchemaObjectModel.EntityContainerAssociationSet/<get_Ends>d__0::<>m__Finally6()
L_0042: endfinally
L_0043: ret
.try L_003a to L_003c finally handler L_003c to L_0043
Donc le code C# devrait être le suivant :
switch (this.<>1__state)
{
case 3:
case 4:
try
{
}
finally
{
this.<>m__Finally6();
}
break;
default:
return;
}
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :