Ejemplo n.º 1
0
        static EntityDeclaration GenerateMemberImplementation(RefactoringContext context, IMember member, bool explicitImplementation)
        {
            var builder = context.CreateTypeSytemAstBuilder();

            builder.GenerateBody                 = true;
            builder.ShowModifiers                = false;
            builder.ShowAccessibility            = true;
            builder.ShowConstantValues           = !explicitImplementation;
            builder.ShowTypeParameterConstraints = !explicitImplementation;
            builder.UseCustomEvents              = explicitImplementation;
            var decl = builder.ConvertEntity(member);

            if (explicitImplementation)
            {
                decl.Modifiers = Modifiers.None;
                decl.AddChild(builder.ConvertType(member.DeclaringType), EntityDeclaration.PrivateImplementationTypeRole);
            }
            else if (member.DeclaringType.Kind == TypeKind.Interface)
            {
                decl.Modifiers |= Modifiers.Public;
            }
            else
            {
                // Remove 'internal' modifier from 'protected internal' members if the override is in a different assembly than the member
                if (!member.ParentAssembly.InternalsVisibleTo(context.Compilation.MainAssembly))
                {
                    decl.Modifiers &= ~Modifiers.Internal;
                }
            }
            return(decl);
        }
Ejemplo n.º 2
0
        static EntityDeclaration GenerateMemberImplementation(RefactoringContext context, IMember member, bool explicitImplementation)
        {
            var builder = context.CreateTypeSytemAstBuilder();

            builder.GenerateBody                 = true;
            builder.ShowConstantValues           = !explicitImplementation;
            builder.ShowTypeParameterConstraints = !explicitImplementation;
            builder.UseCustomEvents              = explicitImplementation;
            var decl = builder.ConvertEntity(member);

            if (explicitImplementation)
            {
                decl.Modifiers = Modifiers.None;
                decl.AddChild(builder.ConvertType(member.DeclaringType), EntityDeclaration.PrivateImplementationTypeRole);
            }
            else
            {
                decl.Modifiers = Modifiers.Public;
            }
            return(decl);
        }