protected override IEnumerable <string> GenerateCode(List <object> includedMembers) { var constructorDeclaration = new ConstructorDeclaration { Name = Options.EnclosingType.Name, Modifiers = Modifiers.Public, Body = new BlockStatement() }; foreach (IMember member in includedMembers) { constructorDeclaration.Parameters.Add(new ParameterDeclaration(Options.CreateShortType(member.ReturnType), CreateParameterName(member))); var memberReference = new MemberReferenceExpression(new ThisReferenceExpression(), member.Name); var assign = new AssignmentExpression(memberReference, AssignmentOperatorType.Assign, new IdentifierExpression(CreateParameterName(member))); constructorDeclaration.Body.Statements.Add(new ExpressionStatement(assign)); } yield return(constructorDeclaration.ToString(Options.FormattingOptions)); }
protected override IEnumerable <string> GenerateCode(List <object> includedMembers) { bool gotConstructorOverrides = false; foreach (IMethod m in includedMembers.OfType <IMethod> ().Where(m => m.SymbolKind == SymbolKind.Constructor)) { gotConstructorOverrides = true; var init = new ConstructorInitializer { ConstructorInitializerType = ConstructorInitializerType.Base }; var overridenConstructor = new ConstructorDeclaration { Name = Options.EnclosingType.Name, Modifiers = Modifiers.Public, Body = new BlockStatement(), }; if (m.Parameters.Count > 0) { overridenConstructor.Initializer = init; } foreach (var par in m.Parameters) { overridenConstructor.Parameters.Add(new ParameterDeclaration(Options.CreateShortType(par.Type), par.Name)); init.Arguments.Add(new IdentifierExpression(par.Name)); } foreach (var member in includedMembers.OfType <IMember> ()) { if (member.SymbolKind == SymbolKind.Constructor) { continue; } overridenConstructor.Parameters.Add(new ParameterDeclaration(Options.CreateShortType(member.ReturnType), CreateParameterName(member))); var memberReference = new MemberReferenceExpression(new ThisReferenceExpression(), member.Name); var assign = new AssignmentExpression(memberReference, AssignmentOperatorType.Assign, new IdentifierExpression(CreateParameterName(member))); overridenConstructor.Body.Statements.Add(new ExpressionStatement(assign)); } yield return(overridenConstructor.ToString(Options.FormattingOptions)); } if (gotConstructorOverrides) { yield break; } var constructorDeclaration = new ConstructorDeclaration { Name = Options.EnclosingType.Name, Modifiers = Modifiers.Public, Body = new BlockStatement() }; foreach (IMember member in includedMembers) { constructorDeclaration.Parameters.Add(new ParameterDeclaration(Options.CreateShortType(member.ReturnType), CreateParameterName(member))); var memberReference = new MemberReferenceExpression(new ThisReferenceExpression(), member.Name); var assign = new AssignmentExpression(memberReference, AssignmentOperatorType.Assign, new IdentifierExpression(CreateParameterName(member))); constructorDeclaration.Body.Statements.Add(new ExpressionStatement(assign)); } yield return(constructorDeclaration.ToString(Options.FormattingOptions)); }
protected override IEnumerable<string> GenerateCode (List<object> includedMembers) { var constructorDeclaration = new ConstructorDeclaration () { Name = Options.EnclosingType.Name, Modifiers = ICSharpCode.NRefactory.CSharp.Modifiers.Public, Body = new BlockStatement () }; foreach (IMember member in includedMembers) { constructorDeclaration.Parameters.Add (new ParameterDeclaration (Options.CreateShortType (member.ReturnType), CreateParameterName (member))); var memberReference = new MemberReferenceExpression (new ThisReferenceExpression (), member.Name); var assign = new AssignmentExpression (memberReference, AssignmentOperatorType.Assign, new IdentifierExpression (CreateParameterName (member))); constructorDeclaration.Body.Statements.Add (new ExpressionStatement (assign)); } yield return constructorDeclaration.ToString (Options.FormattingOptions); }
protected override IEnumerable<string> GenerateCode (List<object> includedMembers) { bool gotConstructorOverrides = false; foreach (IMethod m in includedMembers.OfType<IMethod> ().Where (m => m.SymbolKind == SymbolKind.Constructor)) { gotConstructorOverrides = true; var init = new ConstructorInitializer { ConstructorInitializerType = ConstructorInitializerType.Base }; var overridenConstructor = new ConstructorDeclaration { Name = Options.EnclosingType.Name, Modifiers = Modifiers.Public, Body = new BlockStatement (), }; if (m.Parameters.Count > 0) overridenConstructor.Initializer = init; foreach (var par in m.Parameters) { overridenConstructor.Parameters.Add (new ParameterDeclaration (Options.CreateShortType (par.Type), par.Name)); init.Arguments.Add (new IdentifierExpression(par.Name)); } foreach (var member in includedMembers.OfType<IMember> ()) { if (member.SymbolKind == SymbolKind.Constructor) continue; overridenConstructor.Parameters.Add (new ParameterDeclaration (Options.CreateShortType (member.ReturnType), CreateParameterName (member))); var memberReference = new MemberReferenceExpression (new ThisReferenceExpression (), member.Name); var assign = new AssignmentExpression (memberReference, AssignmentOperatorType.Assign, new IdentifierExpression (CreateParameterName (member))); overridenConstructor.Body.Statements.Add (new ExpressionStatement (assign)); } yield return overridenConstructor.ToString (Options.FormattingOptions); } if (gotConstructorOverrides) yield break; var constructorDeclaration = new ConstructorDeclaration { Name = Options.EnclosingType.Name, Modifiers = Modifiers.Public, Body = new BlockStatement () }; foreach (IMember member in includedMembers) { constructorDeclaration.Parameters.Add (new ParameterDeclaration (Options.CreateShortType (member.ReturnType), CreateParameterName (member))); var memberReference = new MemberReferenceExpression (new ThisReferenceExpression (), member.Name); var assign = new AssignmentExpression (memberReference, AssignmentOperatorType.Assign, new IdentifierExpression (CreateParameterName (member))); constructorDeclaration.Body.Statements.Add (new ExpressionStatement (assign)); } yield return constructorDeclaration.ToString (Options.FormattingOptions); }