{"id":15036242,"url":"https://github.com/amis92/recordgenerator","last_synced_at":"2025-04-09T23:21:14.716Z","repository":{"id":74175557,"uuid":"85298425","full_name":"amis92/RecordGenerator","owner":"amis92","description":"C# immutable records generator","archived":false,"fork":false,"pushed_at":"2020-04-08T13:23:20.000Z","size":1111,"stargazers_count":73,"open_issues_count":28,"forks_count":10,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-03-24T01:11:42.115Z","etag":null,"topics":["amadevus","code-generation","code-generator","csharp","csharp-library","dotnet","immutability","immutable","nuget","records","roslyn-analyzer"],"latest_commit_sha":null,"homepage":"https://amis92.github.io/RecordGenerator/","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/amis92.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2017-03-17T10:13:54.000Z","updated_at":"2025-02-28T06:18:11.000Z","dependencies_parsed_at":null,"dependency_job_id":"6f347170-6b39-4abb-9e6d-0591ba569138","html_url":"https://github.com/amis92/RecordGenerator","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amis92%2FRecordGenerator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amis92%2FRecordGenerator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amis92%2FRecordGenerator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/amis92%2FRecordGenerator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/amis92","download_url":"https://codeload.github.com/amis92/RecordGenerator/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248126363,"owners_count":21051910,"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":["amadevus","code-generation","code-generator","csharp","csharp-library","dotnet","immutability","immutable","nuget","records","roslyn-analyzer"],"created_at":"2024-09-24T20:30:36.760Z","updated_at":"2025-04-09T23:21:14.692Z","avatar_url":"https://github.com/amis92.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Amadevus.RecordGenerator\n\n![RecordGenerator logo](https://raw.githubusercontent.com/amis92/RecordGenerator/master/docs/logo.png)\n\n\u003e ℹ This is for v0.6 of RecordGenerator.\n\nDocumentation available at [amis92.github.io/RecordGenerator](https://amis92.github.io/RecordGenerator) (or in [docs folder](docs/README.md)).\n\n## Description\n[Description]: #description\n\nC# Record Generator makes creating **immutable** record types a breeze! Just adorn your data class with `[Record]` attribute\nand keep your code clean and simple. The backing code is generated on build-time, including IntelliSense support\n(just save the file, Visual Studio will make a build in background).\n\n[![Join the chat at gitter!](https://img.shields.io/gitter/room/amis92/recordgenerator.svg)](https://gitter.im/amis92/RecordGenerator?utm_source=badge\u0026utm_medium=badge\u0026utm_campaign=pr-badge\u0026utm_content=badge)\n[![License](https://img.shields.io/github/license/amis92/recordgenerator.svg)](https://github.com/amis92/RecordGenerator/blob/master/LICENSE)\n\n[![NuGet package](https://img.shields.io/nuget/v/Amadevus.RecordGenerator.svg)](https://www.nuget.org/packages/Amadevus.RecordGenerator/)\n[![NuGet package preview](https://img.shields.io/nuget/vpre/Amadevus.RecordGenerator.svg)](https://www.nuget.org/packages/Amadevus.RecordGenerator/)\n[![MyGet package](https://img.shields.io/myget/amadevus/v/Amadevus.RecordGenerator.svg?label=myget-ci)](https://www.myget.org/feed/amadevus/package/nuget/Amadevus.RecordGenerator)\n\n[![GitHub Actions - .NET CI workflow](https://github.com/amis92/RecordGenerator/workflows/.NET%20Core%20CI/badge.svg?branch=master)](https://github.com/amis92/RecordGenerator/actions?query=workflow%3A%22.NET+Core+CI%22+branch%3Amaster)\n[![Azure Pipelines Build Status](https://dev.azure.com/amadevus/RecordGenerator/_apis/build/status/amis92.RecordGenerator?branchName=master)](https://dev.azure.com/amadevus/RecordGenerator/_build/latest?definitionId=1\u0026branchName=master)\n\n---\n\n## Demo\n\nInstallation, usage, examples and all other docs available at [amis92.github.io/RecordGenerator](https://amis92.github.io/RecordGenerator)\n\n```csharp\nusing System;\nusing Amadevus.RecordGenerator;\n\nnamespace QuickDemo\n{\n    [Record(Features.Default | Features.Equality)]\n    public sealed partial class Contact\n    {\n        public int Id { get; }\n        public string Name { get; }\n        public string Email { get; }\n        public DateTime? Birthday { get; }\n    }\n\n    public static class Program\n    {\n        public static void Main()\n        {\n            var adam = new Contact.Builder\n            {\n                Id = 1,\n                Name = \"Adam Demo\",\n                Email = \"foo@bar.com\"\n            }.ToImmutable();\n            var adamWithBday = adam.WithBirthday(DateTime.UtcNow);\n            Console.WriteLine(\"Pretty display: \" + adamWithBday);\n            // Pretty display: { Id = 1, Name = Adam Demo, Email = foo@bar.com, Birthday = 06.01.2020 23:17:06 }\n            Console.WriteLine(\"Check equality: \" + adam.Equals(adamWithBday));\n            // Check equality: False\n            Console.WriteLine(\"Check equality: \" + adam.Equals(new Contact(1, \"Adam Demo\", \"foo@bar.com\", null)));\n            // Check equality: True\n        }\n    }\n}\n```\nThe above is taken from [QuickDemo sample](samples/QuickDemo/Program.cs)\n\n## Development\n[Development]: #development\n\nTo build the solution, .NET Core SDK v3.1.100 is required, as specified in [`global.json`](global.json).\n\n## Credits\n[Credits]: #credits\n\n`Amadevus.RecordGenerator` wouldn't work if not for @AArnott [AArnott's CodeGeneration.Roslyn](https://github.com/AArnott/CodeGeneration.Roslyn).\n\nAnalyzers in `Amadevus.RecordGenerator.Analyzers` were inspired by [xUnit.net's analyzers](https://github.com/xunit/xunit.analyzers).\n\n## Contributions\n[Contributions]: #contributions\n\nAll contributions are welcome, as well as critique. If you have any issues, problems or suggestions -\nplease open an issue.\n\nVisual Studio logo ™ Microsoft Corporation, used without permission.\n\nRecordGenerator logo (on top) © 2017 Amadeusz Sadowski, all rights reserved.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famis92%2Frecordgenerator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Famis92%2Frecordgenerator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Famis92%2Frecordgenerator/lists"}