コード例 #1
0
        private FieldDeclarationSyntax AddDependencyProperty(DpOptions options)
        {
            var memberaccess = MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, IdentifierName("DependencyProperty"), IdentifierName(options == DpOptions.RenderAttachedProperty ? "RegisterAttached" : "Register"));

            var argumentList = GetArgs(options);

            //var registerCall = ExpressionStatement(InvocationExpression(memberaccess, ArgumentList(argumentList)));
            return(DeclareField(dpName, "DependencyProperty", memberaccess, argumentList));
        }
コード例 #2
0
        public string ToString(DpOptions options)
        {
            if (options == DpOptions.RenderReadOnlyProperty)
            {
                return(Stringify(AddReadOnlyDependencyProperty()));
            }

            return(AddDependencyProperty(options).ToString());
        }
コード例 #3
0
        private SeparatedSyntaxList <ArgumentSyntax> GetArgs(DpOptions options)
        {
            var frameworkMetadataArguments = new ArgumentSyntax[] { Argument(variable.Initializer?.Value ?? DefaultExpression(type)) };

            if (options == DpOptions.RenderFrameworkCallback)
            {
                frameworkMetadataArguments = frameworkMetadataArguments.Concat(new[] { Argument(IdentifierName(Program.GetCallbackMethodName(variable))) }).ToArray();
            }

            return(SeparatedList(new[]
            {
                options == DpOptions.RenderAttachedProperty
                    ? Argument(LiteralExpression(SyntaxKind.StringLiteralExpression, Literal(variable.Identifier.Text))) :
                Argument(InvocationExpression(IdentifierName("nameof")).WithArgumentList(ArgumentList(SeparatedList(new[] { Argument(IdentifierName(variable.Identifier.Text)) })))),
                Argument(TypeOfExpression(type)),
                Argument(TypeOfExpression(ParseTypeName(@class.Identifier.Text))),
                Argument(ObjectCreationExpression(ParseTypeName("FrameworkPropertyMetadata")).WithArgumentList(ArgumentList(SeparatedList(frameworkMetadataArguments))))
            }));
        }