Uno.CodeGen
is a set of tools to generate C# code in msbuild based projects.
Features:
- Amazingly fast: absolutely zero reflection at runtime
- Generates both
.Equals()
and.GetHashCode()
overrrides - Generates equality (
==
and!=
) operators - Implements
IEquatable<T>
- Works with derived classes
- Custom comparers supported
- Works with collection members (both same order and unsorted equality)
- Works with dictionary members (both same order and unsorted equality)
- Optional case insentive comparisons for strings
- Optional support for KeyEquality (see doc for more details)
- Debuggable: You can put a breakpoint directly in the generated code
- Highly configureable: Generated code provides a lot of useful tips (stripped in previous snippet)
- Documentation here for Equality Members Generator
Features:
- Automatic Null object pattern generation
- Automatic generation of
<YourClass>.Builder
nested class - Fluent
.With<field/property name>()
generation of every members of your class - Amazingly fast: absolutely zero reflection at runtime
- Works with generics & derived classes (even if they are from external assembly)
- Optional support (on by default) for
[GeneratedEquality]
- Transparent support for Newtonsoft's JSON.NET (activated when detected, can be turned off)
- Transparent support for System.Text.Json (activated when detected, can be turned off)
- Debuggable: You can put a breakpoint directly in the generated code
- Validation to avoid mutable code in your class
- Highly configureable: Generated code provides a lot of useful tips (stripped in previous snippet)
- Documentation here for Immutable Entities Generator
Generator | Triggering Attributes | Usage | |
---|---|---|---|
ClassLifecycleGenerator |
[ConstructorMethod] [DisposeMethod] [FinalizerMethod] |
Generate code to extend the lifecyle of a class. | Documentation |
CompilationReferencesListingGenerator |
none | Generate a file without useful code, containing only comments detailing references used to compile the project. | Documentation |
EqualityGenerator |
[GenerateEquality] |
Generate code for efficient .Equals() members generation. |
Documentation |
ImmutableGenerator |
[GenerateImmutable] |
Generate code to build truly immutable entities. | Documentation |
InjectableGenerator |
[Inject] |
Generate code to resolve and inject dependencies. | Documentation |
Make sure to visit our FAQ, StackOverflow, create an issue or visit our gitter.
Read our contributing guide to learn about our development process and how to propose bug fixes and improvements.