Mitc.Support.Enumeration 1.0.9

Mitc.Support.Enumeration

A base class for creating strongly-typed enumeration classes — an alternative to C# enum that supports string values, rich behavior, and easy extensibility.

Defining an Enumeration

Declare a class that extends Enumeration<T> with static readonly fields for each member:

public class OrderStatus : Enumeration<OrderStatus>
{
    public static readonly OrderStatus Pending  = new("Pending");
    public static readonly OrderStatus Shipped  = new("Shipped");
    public static readonly OrderStatus Delivered = new("Delivered");
    public static readonly OrderStatus Cancelled = new("Cancelled");
}

Each member is automatically assigned a sequential integer ID based on declaration order. To use stable, explicit IDs instead:

public static readonly OrderStatus Pending = new(1, "Pending");

Usage

Get all members

OrderStatus[] all = OrderStatus.Values();

Parse from string or int

OrderStatus status = OrderStatus.Parse("shipped");   // case-insensitive
OrderStatus status = OrderStatus.Parse(2);           // by id

if (OrderStatus.TryParse("unknown", null, out var result))
    // result is the matched value

Compare

if (order.Status == OrderStatus.Shipped) { }
if (order.Status == "Shipped") { }           // string comparison
if (order.Status == 2) { }                   // id comparison
if (order.Status > OrderStatus.Pending) { }  // ordering by declaration order

Cast

string s = (string)OrderStatus.Shipped;   // "Shipped"
int id   = (int)OrderStatus.Shipped;      // 2

OrderStatus a = (OrderStatus)"Shipped";
OrderStatus b = (OrderStatus)2;

Display

Console.WriteLine(OrderStatus.Shipped);  // "Shipped"

JSON Serialization

On .NET 5+, register EnumerationJsonConverter<T> to serialize/deserialize as a string:

builder.Services.AddControllers().AddJsonOptions(o =>
{
    o.JsonSerializerOptions.Converters.Add(new EnumerationJsonConverter<OrderStatus>());
});

Or per-property:

[JsonConverter(typeof(EnumerationJsonConverter<OrderStatus>))]
public OrderStatus Status { get; set; }

Model Binding / TypeConverter

Register EnumerationTypeConverter<T> to support model binding and TypeDescriptor-based conversion from strings:

[TypeConverter(typeof(EnumerationTypeConverter<OrderStatus>))]
public class OrderStatus : Enumeration<OrderStatus> { ... }

Target Frameworks

netstandard2.0, net5.0, net6.0, net7.0, net8.0, net9.0, net10.0

On .NET 7+, Enumeration<T> additionally implements IParsable<T>, IEqualityOperators<T, T, bool>, and IComparisonOperators<T, T, bool>.

Showing the top 20 packages that depend on Mitc.Support.Enumeration.

Packages Downloads
Mitc.Integrations.Stripe
Turnkey Stripe integration for ASP.NET Core. Handles webhook processing, product/price catalog syncing, subscription management, checkout sessions, and metered usage reporting.
1
Mitc.Integrations.Stripe
Turnkey Stripe integration for ASP.NET Core. Handles webhook processing, product/price catalog syncing, subscription management, checkout sessions, and metered usage reporting.
2
Mitc.Integrations.Stripe
Turnkey Stripe integration for ASP.NET Core. Handles webhook processing, product/price catalog syncing, subscription management, checkout sessions, and metered usage reporting.
4
Mitc.Integrations.Stripe
Turnkey Stripe integration for ASP.NET Core. Handles webhook processing, product/price catalog syncing, subscription management, checkout sessions, and metered usage reporting.
5
Mitc.Integrations.Stripe
Turnkey Stripe integration for ASP.NET Core. Handles webhook processing, product/price catalog syncing, subscription management, checkout sessions, and metered usage reporting.
7
Mitc.Integrations.Stripe
Turnkey Stripe integration for ASP.NET Core. Handles webhook processing, product/price catalog syncing, subscription management, checkout sessions, and metered usage reporting.
15
Mitc.Integrations.Stripe
Turnkey Stripe integration for ASP.NET Core. Handles webhook processing, product/price catalog syncing, subscription management, checkout sessions, and metered usage reporting.
27
Mitc.Support.Enumeration.EntityFramework
Adds Entity Framework value conversion support for Enumeration classes.
2
Mitc.Support.Enumeration.EntityFramework
Adds Entity Framework value conversion support for Enumeration classes.
4
Mitc.Support.Enumeration.EntityFramework
Adds Entity Framework value conversion support for Enumeration classes.
53

.NET 5.0

  • No dependencies.

.NET 6.0

  • No dependencies.

.NET 7.0

  • No dependencies.

.NET 8.0

  • No dependencies.

.NET 9.0

  • No dependencies.

.NET 10.0

  • No dependencies.

.NET Standard 2.0

  • No dependencies.

Version Downloads Last updated
1.0.9 2 3/6/2026
1.0.8 4 2/18/2026
1.0.5 22 2/18/2026
1.0.3 34 2/11/2026
1.0.2 7 10/6/2025
1.0.1 2 7/18/2025
1.0.0 49 7/18/2025