コード例 #1
0
        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);
        }
コード例 #2
0
 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))))))));
 }