MethodDefinition GetGet(FieldDefinition field, string name)
{
var get = new MethodDefinition("get_" + name, MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig, field.FieldType);
var instructions = get.Body.Instructions;
instructions.Add(Instruction.Create(OpCodes.Ldarg_0));
instructions.Add(Instruction.Create(OpCodes.Ldfld, field));
instructions.Add(Instruction.Create(OpCodes.Stloc_0));
var inst = Instruction.Create(OpCodes.Ldloc_0);
instructions.Add(Instruction.Create(OpCodes.Br_S, inst));
instructions.Add(inst);
instructions.Add(Instruction.Create(OpCodes.Ret));
get.Body.Variables.Add(new VariableDefinition(field.FieldType));
get.Body.InitLocals = true;
get.SemanticsAttributes = MethodSemanticsAttributes.Getter;
return get;
}