{"id":19486775,"url":"https://github.com/jp2masa/avalonia.propertygenerator","last_synced_at":"2025-04-25T18:32:04.725Z","repository":{"id":93674336,"uuid":"333621561","full_name":"jp2masa/Avalonia.PropertyGenerator","owner":"jp2masa","description":"Avalonia.PropertyGenerator generates the appropriate CLR members for Avalonia property definitions.","archived":false,"fork":false,"pushed_at":"2023-07-01T19:30:33.000Z","size":66,"stargazers_count":23,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-04T01:23:29.336Z","etag":null,"topics":["attached","avalonia","csharp","direct","dotnet","dotnet-core","generator","property","roslyn","source","styled"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jp2masa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"jp2masa"}},"created_at":"2021-01-28T02:24:29.000Z","updated_at":"2024-12-08T01:49:35.000Z","dependencies_parsed_at":"2024-11-10T20:39:41.819Z","dependency_job_id":"bdab7b02-b8b5-401b-9915-8c6335e39f6d","html_url":"https://github.com/jp2masa/Avalonia.PropertyGenerator","commit_stats":null,"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jp2masa%2FAvalonia.PropertyGenerator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jp2masa%2FAvalonia.PropertyGenerator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jp2masa%2FAvalonia.PropertyGenerator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jp2masa%2FAvalonia.PropertyGenerator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jp2masa","download_url":"https://codeload.github.com/jp2masa/Avalonia.PropertyGenerator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250872247,"owners_count":21500783,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["attached","avalonia","csharp","direct","dotnet","dotnet-core","generator","property","roslyn","source","styled"],"created_at":"2024-11-10T20:39:31.644Z","updated_at":"2025-04-25T18:32:04.716Z","avatar_url":"https://github.com/jp2masa.png","language":"C#","funding_links":["https://github.com/sponsors/jp2masa"],"categories":[],"sub_categories":[],"readme":"[![Build status](https://ci.appveyor.com/api/projects/status/1ow4vfhp9t92k3bh/branch/master?svg=true)](https://ci.appveyor.com/project/jp2masa/avalonia-propertygenerator/branch/master)\r\n[![NuGet](https://img.shields.io/nuget/v/jp2masa.Avalonia.PropertyGenerator.CSharp.svg)](https://www.nuget.org/packages/jp2masa.Avalonia.PropertyGenerator.CSharp/)\r\n[![MyGet](https://img.shields.io/myget/jp2masa/vpre/jp2masa.Avalonia.PropertyGenerator.CSharp.svg?label=myget)](https://www.myget.org/feed/jp2masa/package/nuget/jp2masa.Avalonia.PropertyGenerator.CSharp)\r\n\r\n# Avalonia.PropertyGenerator\r\n\r\nAvalonia.PropertyGenerator generates the appropriate CLR members for Avalonia property definitions.\r\n\r\n## Usage\r\n\r\n1. Add reference to `jp2masa.Avalonia.PropertyGenerator.CSharp` package:\r\n\r\n```xml\r\n\u003cPackageReference Include=\"jp2masa.Avalonia.PropertyGenerator.CSharp\" Version=\"0.10.0-beta2\" PrivateAssets=\"All\" /\u003e\r\n```\r\n\r\n2. Declare Avalonia properties as usual, except the CLR members, which are now automatically generated!\r\n\r\n## Example\r\n\r\n### Source\r\n\r\n```cs\r\nusing Avalonia.Controls;\r\nusing Avalonia.Controls.Primitives;\r\n\r\nnamespace Avalonia.PropertyGenerator.CSharp.Demo\r\n{\r\n    internal sealed partial class DemoControl : TemplatedControl\r\n    {\r\n        public static readonly StyledProperty\u003cdouble\u003e NumberProperty =\r\n            AvaloniaProperty.Register\u003cDemoControl, double\u003e(nameof(Number));\r\n\r\n        [BackingField(Name = \"m_text\", Accessibility = BackingFieldAccessibility.Internal)]\r\n        public static readonly DirectProperty\u003cDemoControl, string?\u003e TextProperty =\r\n            AvaloniaProperty.RegisterDirect\u003cDemoControl, string?\u003e(nameof(Text), o =\u003e o.Text, (o, v) =\u003e o.Text = v);\r\n\r\n        public static readonly AttachedProperty\u003cbool\u003e BoolProperty =\r\n            AvaloniaProperty.RegisterAttached\u003cDemoControl, Control, bool\u003e(\"Bool\");\r\n\r\n        public DemoControl()\r\n        {\r\n            m_text = \"Hello World!\";\r\n        }\r\n    }\r\n}\r\n```\r\n\r\n### Generated code\r\n\r\n```cs\r\nnamespace Avalonia.PropertyGenerator.CSharp.Demo\r\n{\r\n    partial class DemoControl\r\n    {\r\n        public double Number\r\n        {\r\n            get =\u003e GetValue(NumberProperty);\r\n            set =\u003e SetValue(NumberProperty, value);\r\n        }\r\n\r\n        internal string? m_text;\r\n\r\n        public string? Text\r\n        {\r\n            get =\u003e m_text;\r\n            set =\u003e SetAndRaise(TextProperty, ref m_text, value);\r\n        }\r\n\r\n        public static bool GetBool(Avalonia.AvaloniaObject obj) =\u003e obj.GetValue(BoolProperty);\r\n\r\n        public static void SetBool(Avalonia.AvaloniaObject obj, bool value) =\u003e obj.SetValue(BoolProperty, value);\r\n    }\r\n}\r\n\r\n```\r\n\r\n## TODO\r\n\r\n- Readonly direct properties\r\n- Generate XML documentation\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjp2masa%2Favalonia.propertygenerator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjp2masa%2Favalonia.propertygenerator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjp2masa%2Favalonia.propertygenerator/lists"}