private ISymbol GenerateMember(
                ISymbol member,
                bool addUnsafe,
                CancellationToken cancellationToken)
            {
                var modifiers = new DeclarationModifiers(isOverride: true, isUnsafe: addUnsafe);
                var accessibility = member.ComputeResultantAccessibility(_state.ClassType);

                if (member.Kind == SymbolKind.Method)
                {
                    return GenerateMethod((IMethodSymbol)member, modifiers, accessibility, cancellationToken);
                }
                else if (member.Kind == SymbolKind.Property)
                {
                    return GenerateProperty((IPropertySymbol)member, modifiers, accessibility, cancellationToken);
                }
                else if (member.Kind == SymbolKind.Event)
                {
                    var @event = (IEventSymbol)member;
                    return CodeGenerationSymbolFactory.CreateEventSymbol(
                        @event,
                        accessibility: accessibility,
                        modifiers: modifiers);
                }

                return null;
            }
            private ISymbol GenerateMember(
                ISymbol member,
                bool addUnsafe,
                CancellationToken cancellationToken)
            {
                var modifiers     = DeclarationModifiers.None.WithIsOverride(true).WithIsUnsafe(addUnsafe);
                var accessibility = member.ComputeResultantAccessibility(_state.ClassType);

                if (member.Kind == SymbolKind.Method)
                {
                    return(GenerateMethod((IMethodSymbol)member, modifiers, accessibility, cancellationToken));
                }
                else if (member.Kind == SymbolKind.Property)
                {
                    return(GenerateProperty((IPropertySymbol)member, modifiers, accessibility, cancellationToken));
                }
                else if (member.Kind == SymbolKind.Event)
                {
                    var @event = (IEventSymbol)member;
                    return(CodeGenerationSymbolFactory.CreateEventSymbol(
                               @event,
                               accessibility: accessibility,
                               modifiers: modifiers));
                }

                return(null);
            }
Пример #3
0
            private ISymbol GenerateMember(
                ISymbol member,
                bool addUnsafe,
                ImplementTypePropertyGenerationBehavior propertyGenerationBehavior,
                CancellationToken cancellationToken)
            {
                var modifiers     = new DeclarationModifiers(isOverride: true, isUnsafe: addUnsafe);
                var accessibility = member.ComputeResultantAccessibility(_state.ClassType);

                return(member switch
                {
                    IMethodSymbol method => GenerateMethod(method, modifiers, accessibility, cancellationToken),
                    IPropertySymbol property => GenerateProperty(property, modifiers, accessibility, propertyGenerationBehavior),
                    IEventSymbol @event => CodeGenerationSymbolFactory.CreateEventSymbol(
                        @event, accessibility: accessibility, modifiers: modifiers),
                    _ => null,
                });