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)); }
public string ToString(DpOptions options) { if (options == DpOptions.RenderReadOnlyProperty) { return(Stringify(AddReadOnlyDependencyProperty())); } return(AddDependencyProperty(options).ToString()); }
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)))) })); }