RichEntity 1.0.2
See the version list below for details.
dotnet add package RichEntity --version 1.0.2
NuGet\Install-Package RichEntity -Version 1.0.2
<PackageReference Include="RichEntity" Version="1.0.2" />
paket add RichEntity --version 1.0.2
#r "nuget: RichEntity, 1.0.2"
// Install RichEntity as a Cake Addin #addin nuget:?package=RichEntity&version=1.0.2 // Install RichEntity as a Cake Tool #tool nuget:?package=RichEntity&version=1.0.2
RichEntity
A library for reducing boilerplate when defining entities. It is using Roslyn's Source Generators to generate the code that is needed for entity definition.
Usage
To generate an entity, you will need to add an IEntity<TIdentifier>
to base list of your entity class.
public partial class Sample : IEntity<int> { }
The library will generate this code in the background.
public partial class Sample : IEquatable<Sample>
{
public Int32 Id { get; protected init; }
protected Sample(Int32 id)
{
Id = id;
}
#nullable enable
public bool Equals(Sample? other)
#nullable restore
{
return other?.Id.Equals(Id) ?? false;
}
#nullable enable
public override bool Equals(object? other)
#nullable restore
{
return Equals(other as Sample);
}
public override int GetHashCode() => Id.GetHashCode();
}
You can customize generated code via attributes.
ConfigureConstructorsAttribute
To configure generated entity constructors decorate type with
ConfigureConstructorsAttribute
.
Settings:
- ParametrizedConstructorAccessibility
Accessibility of parameterized constructor (Entity(TIdentity id)
).
[ConfigureConstructors(ParametrizedConstructorAccessibility = Accessibility.Public)]
public partial class Sample : IEntity<int> { }
public partial class Sample : IEquatable<Sample>
{
public Int32 Id { get; protected init; }
public Sample(Int32 id)
{
Id = id;
}
#nullable enable
public bool Equals(Sample? other)
#nullable restore
{
return other?.Id.Equals(Id) ?? false;
}
#nullable enable
public override bool Equals(object? other)
#nullable restore
{
return Equals(other as Sample);
}
public override int GetHashCode() => Id.GetHashCode();
}
ConfigureIdAttribute
To configure generated identifier decorate type with ConfigureIdAttribute
.
Settings:
- SetterAccessibility
Accessibility ofId
property setter. - SetterType
Type ofId
property setter (set
/init
).
[ConfigureId(SetterAccessibility = Accessibility.Internal, SetterType = SetterType.Set)]
public partial class Sample : IEntity<int> { }
public partial class Sample : IEquatable<Sample>
{
public Int32 Id { get; internal set; }
protected Sample(Int32 id)
{
Id = id;
}
#nullable enable
public bool Equals(Sample? other)
#nullable restore
{
return other?.Id.Equals(Id) ?? false;
}
#nullable enable
public override bool Equals(object? other)
#nullable restore
{
return Equals(other as Sample);
}
public override int GetHashCode() => Id.GetHashCode();
}
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- RichEntity.Annotations (>= 1.0.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Added derived entities support.