コード例 #1
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(Identifiers.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))))
            }));
        }