private IConstructorDeclaration CreateConstructor(IClassDeclaration classDeclaration, IIdentifier fieldIdentifier, ITypeName typeName) { IConstructLanguage language = classDeclaration.Language; IParameter parameter = language.Parameter(typeName); NamingPolicy parameterNamingPolicy = parameter.PrimaryNamingPolicy(classDeclaration.FileModel.UserSettings); string parameterName = parameterNamingPolicy.ChangeNameAccordingToPolicy(classDeclaration.Identifier.Name, classDeclaration.SolutionModel); parameter.Identifier = language.Identifier(parameterName); Modifiers constructorModifiers = Modifiers.Public; Modifiers visibility = classDeclaration.Modifiers.Modifiers.GetVisibility(); if (visibility == Modifiers.None || visibility.IsInternal()) { constructorModifiers = Modifiers.Internal; } IConstructorDeclaration constructor = language.Constructor(language.None <IDocComment>(), language.None <IAttributes>(), language.Modifiers(constructorModifiers), language.Parameters(parameter), language.None <IConstructorInitializer>(), language.Block( language.AssignmentStatement( language.MemberAccess(language.This(), fieldIdentifier), language.VariableAccess(parameter.Identifier)))); return(constructor); }
private static void GenerateSecondParameterAndArgument(IEventDeclaration eventDeclaration, IParameter parameter, IConstructLanguage language, FileModel fileModel, IList <IArgument> arguments, IList <IParameter> parameters) { NamingPolicy parametersNamingPolicy = language.PrimaryNamingPolicyFor <IParameter>(fileModel.UserSettings); IType parameterType = eventDeclaration.TypeName.Type.As <IDelegateType>().ReplaceParameterTypesIn(parameter.Type); IParameter newParameter = language.Parameter( parameter.IsRef, parameter.IsOut, parameter.IsParams, language.TypeName(eventDeclaration.StringTypeAtThisLocation()), parameter.DefaultValue); string parameterName = parametersNamingPolicy.ChangeNameAccordingToPolicy("propertyName", parameter.SolutionModel); newParameter.Identifier = language.Identifier(parameterName); IObjectCreation objectCreation = language.ObjectCreation( language.TypeName(parameterType), language.Arguments( language.Argument( language.VariableAccess(newParameter.Identifier)))); arguments.Add( language.Argument( objectCreation)); parameters.Add(newParameter); }
private static void GenerateSecondParameterAndArgument(IEventDeclaration eventDeclaration, IParameter parameter, IConstructLanguage language, FileModel fileModel, IList<IArgument> arguments, IList<IParameter> parameters) { NamingPolicy parametersNamingPolicy = language.PrimaryNamingPolicyFor<IParameter>(fileModel.UserSettings); IType parameterType = eventDeclaration.TypeName.Type.As<IDelegateType>().ReplaceParameterTypesIn(parameter.Type); IParameter newParameter = language.Parameter( parameter.IsRef, parameter.IsOut, parameter.IsParams, language.TypeName(eventDeclaration.StringTypeAtThisLocation()), parameter.DefaultValue); string parameterName = parametersNamingPolicy.ChangeNameAccordingToPolicy("propertyName", parameter.SolutionModel); newParameter.Identifier = language.Identifier(parameterName); IObjectCreation objectCreation = language.ObjectCreation( language.TypeName(parameterType), language.Arguments( language.Argument( language.VariableAccess(newParameter.Identifier)))); arguments.Add( language.Argument( objectCreation)); parameters.Add(newParameter); }