コード例 #1
0
        private static IMethodDeclaration CreateVBInvocator(IEventDeclaration eventDeclaration, IModifiers modifiers,
            IList<IArgument> arguments, IList<IParameter> parameters, IConstructLanguage language)
        {
            IEventInvocation eventInvocation = language.New<IEventInvocation>();
            eventInvocation.DelegateInvocation =
                language.DelegateInvocation(
                    language.VariableAccess(eventDeclaration.Identifier),
                    language.Arguments(arguments));

            IMethodDeclaration method = language.Method(
                    language.None<IDocComment>(),
                    language.None<IAttributes>(),
                    modifiers,
                    language.TypeName(eventDeclaration.VoidTypeAtThisLocation()),
                    language.None<IMethodTypeParameters>(),
                    language.Parameters(parameters),
                    language.Block(
                        language.ExpressionStatement(eventInvocation)));

            NamingPolicy methodsNamingPolicy = method.PrimaryNamingPolicy(eventDeclaration.FileModel.UserSettings);
            string methodName = methodsNamingPolicy.ChangeNameAccordingToPolicy("Raise" + eventDeclaration.Identifier.Name + "Event",
                eventDeclaration.SolutionModel);

            method.Identifier = language.Identifier(methodName);

            return method;
        }
コード例 #2
0
        public static IMethodDeclaration CreateEventInvocator(FileModel fileModel, IEventDeclaration eventDeclaration)
        {
            IDelegateDeclaration delegateDeclaration = eventDeclaration.TypeName.Type.As <IDelegateType>().DelegateDeclaration;

            if (delegateDeclaration.Exists)
            {
                var                language   = eventDeclaration.Language;
                IModifiers         modifiers  = language.Modifiers(Modifiers.Protected | Modifiers.Virtual);
                IList <IParameter> parameters = new List <IParameter>();
                IList <IArgument>  arguments  = new List <IArgument>();

                arguments.Add(language.Argument(language.New <IThis>()));
                IParameter lastParameter = delegateDeclaration.Parameters.Parameters.Last();
                GenerateSecondParameterAndArgument(eventDeclaration, lastParameter, language, fileModel, arguments, parameters);

                if (string.Equals(language.Name, LanguageNames.CSharp, StringComparison.Ordinal))
                {
                    return(CreateCSInvocator(eventDeclaration, modifiers, arguments, parameters, language));
                }
                else if (string.Equals(language.Name, LanguageNames.VisualBasic, StringComparison.Ordinal))
                {
                    return(CreateVBInvocator(eventDeclaration, modifiers, arguments, parameters, language));
                }
            }

            return(eventDeclaration.Language.None <IMethodDeclaration>());
        }
コード例 #3
0
        private static IMethodDeclaration CreateCSInvocator(IEventDeclaration eventDeclaration, IModifiers modifiers, IList<IArgument> arguments,
            IList<IParameter> parameters, IConstructLanguage language)
        {
            IVariableDeclaration variable = language.Variable(
                eventDeclaration.TypeName,
                language.VariableAccess(eventDeclaration.Identifier));

            NamingPolicy variablesNamingPolicy = variable.PrimaryNamingPolicy(eventDeclaration.FileModel.UserSettings);
            string variableName = variablesNamingPolicy.ChangeNameAccordingToPolicy("on" + eventDeclaration.Identifier.Name,
                eventDeclaration.SolutionModel);

            variable.Identifier = language.Identifier(variableName);

            IIfStatement ifStatement = language.IfStatement(
                language.BinaryExpression(
                    language.VariableAccess(variable.Identifier),
                    Operator.NotEqual,
                    language.New<INull>()),
                language.Block(
                    language.ExpressionStatement(
                        language.DelegateInvocation(
                            language.VariableAccess(variable.Identifier),
                            language.Arguments(arguments)))));

            IMethodDeclaration method = language.Method(
                language.None<IDocComment>(),
                language.None<IAttributes>(),
                modifiers,
                language.TypeName(eventDeclaration.VoidTypeAtThisLocation()),
                language.None<IMethodTypeParameters>(),
                language.Parameters(parameters),
                language.Block(
                    variable,
                    ifStatement));

            NamingPolicy methodsNamingPolicy = method.PrimaryNamingPolicy(eventDeclaration.FileModel.UserSettings);
            string methodName = methodsNamingPolicy.ChangeNameAccordingToPolicy("on" + eventDeclaration.Identifier.ToUpperFirstLetter().Name,
                eventDeclaration.SolutionModel);

            method.Identifier = language.Identifier(methodName);

            return method;
        }
コード例 #4
0
 public void RemoveModifier(IModifiers _modifier)
 {
     modifiers.Remove(_modifier);
     UpdateModifiedValue();
 }
コード例 #5
0
 public void AddModifier(IModifiers _modifier)
 {
     modifiers.Add(_modifier);
     UpdateModifiedValue();
 }
コード例 #6
0
 private bool IsAccessorVisibleOutsideClass(IModifiers modifiers)
 {
     return(modifiers.Modifiers == Modifiers.None || modifiers.Modifiers.IsInternal());
 }
コード例 #7
0
 private bool IsPropertyVisibleOutsideClass(IModifiers modifiers)
 {
     return(modifiers.Modifiers.IsPublic() || modifiers.Modifiers.IsInternal());
 }
コード例 #8
0
 private bool IsPropertyVisibleOutsideClass(IModifiers modifiers)
 {
     return modifiers.Modifiers.IsPublic() || modifiers.Modifiers.IsInternal();
 }
コード例 #9
0
 private bool IsAccessorVisibleOutsideClass(IModifiers modifiers)
 {
     return modifiers.Modifiers == Modifiers.None || modifiers.Modifiers.IsInternal();
 }
コード例 #10
0
 public void SetModifier(IModifiers modifier) => Modifier = modifier;
コード例 #11
0
        private static IMethodDeclaration CreateCSInvocator(IEventDeclaration eventDeclaration, IModifiers modifiers, IList <IArgument> arguments,
                                                            IList <IParameter> parameters, IConstructLanguage language)
        {
            IVariableDeclaration variable = language.Variable(
                eventDeclaration.TypeName,
                language.VariableAccess(eventDeclaration.Identifier));

            NamingPolicy variablesNamingPolicy = variable.PrimaryNamingPolicy(eventDeclaration.FileModel.UserSettings);
            string       variableName          = variablesNamingPolicy.ChangeNameAccordingToPolicy("on" + eventDeclaration.Identifier.Name,
                                                                                                   eventDeclaration.SolutionModel);

            variable.Identifier = language.Identifier(variableName);

            IIfStatement ifStatement = language.IfStatement(
                language.BinaryExpression(
                    language.VariableAccess(variable.Identifier),
                    Operator.NotEqual,
                    language.New <INull>()),
                language.Block(
                    language.ExpressionStatement(
                        language.DelegateInvocation(
                            language.VariableAccess(variable.Identifier),
                            language.Arguments(arguments)))));

            IMethodDeclaration method = language.Method(
                language.None <IDocComment>(),
                language.None <IAttributes>(),
                modifiers,
                language.TypeName(eventDeclaration.VoidTypeAtThisLocation()),
                language.None <IMethodTypeParameters>(),
                language.Parameters(parameters),
                language.Block(
                    variable,
                    ifStatement));

            NamingPolicy methodsNamingPolicy = method.PrimaryNamingPolicy(eventDeclaration.FileModel.UserSettings);
            string       methodName          = methodsNamingPolicy.ChangeNameAccordingToPolicy("on" + eventDeclaration.Identifier.ToUpperFirstLetter().Name,
                                                                                               eventDeclaration.SolutionModel);

            method.Identifier = language.Identifier(methodName);

            return(method);
        }
コード例 #12
0
        private static IMethodDeclaration CreateVBInvocator(IEventDeclaration eventDeclaration, IModifiers modifiers,
                                                            IList <IArgument> arguments, IList <IParameter> parameters, IConstructLanguage language)
        {
            IEventInvocation eventInvocation = language.New <IEventInvocation>();

            eventInvocation.DelegateInvocation =
                language.DelegateInvocation(
                    language.VariableAccess(eventDeclaration.Identifier),
                    language.Arguments(arguments));

            IMethodDeclaration method = language.Method(
                language.None <IDocComment>(),
                language.None <IAttributes>(),
                modifiers,
                language.TypeName(eventDeclaration.VoidTypeAtThisLocation()),
                language.None <IMethodTypeParameters>(),
                language.Parameters(parameters),
                language.Block(
                    language.ExpressionStatement(eventInvocation)));

            NamingPolicy methodsNamingPolicy = method.PrimaryNamingPolicy(eventDeclaration.FileModel.UserSettings);
            string       methodName          = methodsNamingPolicy.ChangeNameAccordingToPolicy("Raise" + eventDeclaration.Identifier.Name + "Event",
                                                                                               eventDeclaration.SolutionModel);

            method.Identifier = language.Identifier(methodName);

            return(method);
        }