private PropertyDefinition _CreatePropertyDefinition(PropertyDeclarationSyntax inputPropertyDeclaration, ClassDeclarationSyntax inputClassDeclaration) { var _propertyDefinition = PropertyDefinition.Create(inputPropertyDeclaration.Identifier.Text, inputPropertyDeclaration.Type.ToString()); var _propertyValidationMethod = inputClassDeclaration.Members .Where(_member => _member.Kind() == SyntaxKind.MethodDeclaration) .Cast <MethodDeclarationSyntax>() .Where(_method => _method.Modifiers.Any(SyntaxKind.StaticKeyword)) .Where(_method => _method.ParameterList.Parameters.Count == 1) .SingleOrDefault(_method => _method.Identifier.Text == NameHelper.TextToPublicMethodIdentifier("Is" + _propertyDefinition.Name + "Valid").Text); if (_propertyValidationMethod != null) { var _valueParameter = _propertyValidationMethod.ParameterList.Parameters[_propertyValidationMethod.ParameterList.Parameters.Count - 1]; Must.Assert(_valueParameter.Type.ToString() == _propertyDefinition.Type); _propertyDefinition = _propertyDefinition .WithValidateMethodName(SyntaxFactory.IdentifierName(_propertyValidationMethod.Identifier)); } var _defaultProperty = inputClassDeclaration.Members .Where(_member => _member.Kind() == SyntaxKind.PropertyDeclaration) .Cast <PropertyDeclarationSyntax>() .Where(_p => _p.Modifiers.Any(SyntaxKind.StaticKeyword)) .SingleOrDefault(_p => _p.Identifier.Text == NameHelper.TextToPublicPropertyIdentifier("Default" + _propertyDefinition.Name).Text); if (_defaultProperty != null) { Must.Assert(_defaultProperty.Type.ToString() == _propertyDefinition.Type); _propertyDefinition = _propertyDefinition.WithDefaultValuePropertyName(SyntaxFactory.IdentifierName(_defaultProperty.Identifier)); } return(_propertyDefinition); }
private ConstructorDeclarationSyntax _CreateOutputClassMainCtor(TypeDefinition typeDefinition) { return(SyntaxFactory .ConstructorDeclaration(SyntaxFactory.Identifier(typeDefinition.Name)) .AddModifiers(SyntaxFactory.Token(SyntaxKind.PrivateKeyword)) .WithParameterList(SyntaxFactory.ParameterList(SyntaxFactory.SeparatedList(typeDefinition.Properties .Select(_property => SyntaxFactory .Parameter(NameHelper.TextToMethodParameterIdentifier(_property.Name)) .WithType(SyntaxFactory.IdentifierName(_property.Type)))))) .WithBody(SyntaxFactory .Block(typeDefinition.Properties .Select(_property => SyntaxFactory .ExpressionStatement(SyntaxFactory .AssignmentExpression( SyntaxKind.SimpleAssignmentExpression, SyntaxFactory.IdentifierName(NameHelper.TextToPublicPropertyIdentifier(_property.Name)), SyntaxFactory.IdentifierName(NameHelper.TextToMethodParameterIdentifier(_property.Name)))))))); }