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.