public override bool Equals(object obj)
        {
            FieldSignature other = obj as FieldSignature;

            return(other != null &&
                   other.fieldType.Equals(fieldType) &&
                   other.mods.Equals(mods));
        }
Ejemplo n.º 2
0
        private static void AddNamedArgument(List <CustomAttributeNamedArgument> list, Type attributeType, string fieldName, Type valueType, object value)
        {
            // some fields are not available on the .NET Compact Framework version of DllImportAttribute/MarshalAsAttribute
            FieldInfo field = attributeType.FindField(fieldName, FieldSignature.Create(valueType, new CustomModifiers()));

            if (field != null)
            {
                list.Add(new CustomAttributeNamedArgument(field, new CustomAttributeTypedArgument(valueType, value)));
            }
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
 internal MissingField(Type declaringType, string name, FieldSignature signature)
 {
     this.declaringType = declaringType;
     this.name          = name;
     this.signature     = signature;
 }
Ejemplo n.º 5
0
 internal override FieldInfo FindField(string name, FieldSignature signature)
 {
     return(new MissingField(this, name, signature));
 }
Ejemplo n.º 6
0
 internal FieldInfo GetMissingFieldOrThrow(Module requester, Type declaringType, string name, FieldSignature signature)
 {
     if (resolveMissingMembers)
     {
         FieldInfo field = new MissingField(declaringType, name, signature);
         if (ResolvedMissingMember != null)
         {
             ResolvedMissingMember(requester, field);
         }
         return(field);
     }
     throw new MissingFieldException(declaringType.ToString() + "." + name);
 }