private static FieldInfo GetField(Module context, Type type, string name, Type fieldType)
{
Type org = type;
for (; type != null && !type.__IsMissing; type = type.BaseType)
{
foreach (FieldInfo field in type.__GetDeclaredFields())
{
if (field.IsPublic && !field.IsStatic && field.Name == name)
{
return field;
}
}
}
// if the field is missing, we stick the missing field on the first missing base type
if (type == null)
{
type = org;
}
FieldSignature sig = FieldSignature.Create(fieldType, new CustomModifiers());
return type.FindField(name, sig)
?? type.Module.universe.GetMissingFieldOrThrow(context, type, name, sig);
}