static void ApplyModifiers(AbstractUnresolvedMember m, Modifiers modifiers) { // members from interfaces are always Public+Abstract. if (m.DeclaringTypeDefinition.Kind == TypeKind.Interface) { m.Accessibility = Accessibility.Public; m.IsAbstract = true; return; } m.Accessibility = GetAccessibility(modifiers) ?? Accessibility.Private; m.IsAbstract = (modifiers & Modifiers.Abstract) != 0; m.IsOverride = (modifiers & Modifiers.Override) != 0; m.IsSealed = (modifiers & Modifiers.Sealed) != 0; m.IsShadowing = (modifiers & Modifiers.New) != 0; m.IsStatic = (modifiers & Modifiers.Static) != 0; m.IsVirtual = (modifiers & Modifiers.Virtual) != 0; //m.IsPartial = (modifiers & Modifiers.Partial) != 0; }
IMemberReference ConvertInterfaceImplementation(AstType interfaceType, AbstractUnresolvedMember unresolvedMember) { ITypeReference interfaceTypeReference = interfaceType.ToTypeReference(); int typeParameterCount = 0; IList<ITypeReference> parameterTypes = null; if (unresolvedMember.EntityType == EntityType.Method) { typeParameterCount = ((IUnresolvedMethod)unresolvedMember).TypeParameters.Count; } IUnresolvedParameterizedMember parameterizedMember = unresolvedMember as IUnresolvedParameterizedMember; if (parameterizedMember != null) { parameterTypes = new ITypeReference[parameterizedMember.Parameters.Count]; for (int i = 0; i < parameterTypes.Count; i++) { parameterTypes[i] = parameterizedMember.Parameters[i].Type; } } return new DefaultMemberReference(unresolvedMember.EntityType, interfaceTypeReference, unresolvedMember.Name, typeParameterCount, parameterTypes); }