Redpoint.StringEnum 2025.1189.841

Prefix Reserved
There is a newer version of this package available.
See the version list below for details.
dotnet add package Redpoint.StringEnum --version 2025.1189.841
                    
NuGet\Install-Package Redpoint.StringEnum -Version 2025.1189.841
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Redpoint.StringEnum" Version="2025.1189.841" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Redpoint.StringEnum" Version="2025.1189.841" />
                    
Directory.Packages.props
<PackageReference Include="Redpoint.StringEnum" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Redpoint.StringEnum --version 2025.1189.841
                    
#r "nuget: Redpoint.StringEnum, 2025.1189.841"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Redpoint.StringEnum@2025.1189.841
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Redpoint.StringEnum&version=2025.1189.841
                    
Install as a Cake Addin
#tool nuget:?package=Redpoint.StringEnum&version=2025.1189.841
                    
Install as a Cake Tool

Redpoint.StringEnum

This library provides an API for defining and using string-backed enumeration types. These are useful when used with databases, where storing string values for enumerations improves forward and backward compatibility (unlike storing numeric values).

Defining a string-backed enumeration type

You can create a string-backed enumeration, by defining a class like so:

class Example : StringEnum<Example>
{
    public static readonly StringEnumValue<Example> FirstValue = Create("first-value");

    public static readonly StringEnumValue<Example> SecondValue = Create("second-value");

    public static readonly StringEnumValue<Example> ThirdValue = Create("third-value");

    // ...
}

The string values that represent the enumeration are case-and-byte sensitive (ordinal comparison). You can not create enumeration values from a null string; ArgumentNullException will be thrown if you pass a null value to Create.

Defining additional enumeration values at runtime

There is currently no API for defining additional enumeration values at runtime; the possible enumeration values are lazy-loaded once by looking at the static fields and static properties of the class that inherits from StringEnum<T> (via the T type parameter). Both public and non-public fields/properties are included.

This library is both trim and AOT-compatible, as it uses [DynamicallyAccessedMembers] to ensure the fields and properties of the enumeration type are available at runtime for reflection.

Static usage of values

In most code, you'll simply use the static readonly fields you've defined, such as Example.FirstValue. All instances of the value - even those from parsing - are guaranteed to be reference and value equal.

Parsing known values from strings

To parse a value that is known to be valid from a string, you can use Example.Parse or StringEnumValue<Example>.Parse:

var value = Example.Parse("first-value");
var value2 = StringEnumValue<Example>.Parse("second-value");

If the value is not valid when calling Parse, StringEnumParseException will be thrown. You should use TryParse (see below) if the value is potentially invalid.

If you pass a null value to Parse, ArgumentNullException will be thrown.

Parsing potentially invalid string values

If you're unsure whether a string is a valid enumeration value, you can use Example.TryParse or StringEnumValue<Example>.TryParse:

var isValid = Example.TryParse("...", out var value);
var isValid2 = StringEnumValue<Example>.TryParse("...", out var value2);

If you pass a null value to TryParse, ArgumentNullException will be thrown.

Parsing strings to runtime-based enumeration types

If you don't know the type of the string enumeration you want to parse into at compile time, you can use DynamicStringEnumValue.TryParse to parse any string value into an instance of StringEnumValue<T> by passing the StringEnumValue<T> type as the first parameter, like so:

var type = typeof(StringEnumValue<Example>);
var isValid = DynamicStringEnumValue.TryParse(type, "...", out var value);

You can use DynamicStringEnumValue.IsStringEnumValueType to check if type is a constructed generic type of StringEnumValue<T>. The APIs provided by DynamicStringEnumValue are primarily intended to be used with database serialization and deserialization, where the concrete types of values are not known at the point of deserialization.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net9.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Redpoint.StringEnum:

Package Downloads
Redpoint.CloudFramework

A framework for building ASP.NET Core applications on top of Google Cloud Firestore in Datastore mode. Not only does this framework provide a model-based API for interacting with Google Cloud Firestore, it contains useful implementations of things like database migrations, distributed locks, geographic indexes and sharded counters.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2025.1198.682 0 7/17/2025
2025.1198.638 0 7/17/2025
2025.1198.574 0 7/17/2025
2025.1198.187 0 7/17/2025
2025.1191.922 106 7/10/2025
2025.1191.235 108 7/10/2025
2025.1190.175 126 7/9/2025
2025.1189.851 128 7/8/2025
2025.1189.841 129 7/8/2025
2025.1187.587 173 7/6/2025
2025.1183.853 141 7/2/2025
2025.1181.644 132 6/30/2025
2025.1175.340 192 6/24/2025
2025.1174.62 149 6/23/2025
2025.1171.352 124 6/20/2025
2025.1169.413 146 6/18/2025
2025.1166.1191 155 6/15/2025
2025.1166.1178 135 6/15/2025
2025.1166.1177 137 6/15/2025
2025.1159.445 118 6/8/2025
2025.1159.364 110 6/8/2025
2025.1159.324 108 6/8/2025
2025.1155.438 147 6/4/2025
2025.1141.1424 149 5/21/2025
2025.1140.383 142 5/20/2025
2025.1140.377 148 5/20/2025
2025.1139.983 156 5/19/2025
2025.1139.952 152 5/19/2025
2025.1139.941 147 5/19/2025
2025.1139.855 139 5/19/2025
2025.1139.850 141 5/19/2025
2025.1139.837 142 5/19/2025
2025.1139.811 144 5/19/2025
2025.1139.806 147 5/19/2025
2025.1139.796 133 5/19/2025
2025.1139.729 140 5/19/2025
2025.1139.719 154 5/19/2025
2025.1139.706 153 5/19/2025
2025.1139.694 143 5/19/2025
2025.1139.679 146 5/19/2025
2025.1139.662 144 5/19/2025
2025.1139.638 140 5/19/2025
2025.1139.628 143 5/19/2025
2025.1139.626 141 5/19/2025
2025.1139.619 140 5/19/2025
2025.1139.605 144 5/19/2025
2025.1139.600 148 5/19/2025
2025.1139.583 144 5/19/2025
2025.1139.573 141 5/19/2025
2025.1139.564 143 5/19/2025
2025.1139.552 152 5/19/2025
2025.1139.543 149 5/19/2025
2025.1138.909 143 5/18/2025
2025.1136.150 204 5/16/2025
2025.1135.267 223 5/15/2025
2025.1135.143 223 5/15/2025
2025.1133.453 237 5/13/2025
2025.1133.351 230 5/13/2025
2025.1133.349 231 5/13/2025
2025.1133.347 243 5/13/2025
2025.1130.236 80 5/10/2025
2025.1129.831 117 5/9/2025
2025.1129.346 138 5/9/2025
2025.1129.345 133 5/9/2025
2025.1121.1370 160 5/1/2025
2025.1119.450 167 4/29/2025
2025.1119.436 161 4/29/2025
2025.1119.409 158 4/29/2025
2025.1119.388 162 4/29/2025
2025.1119.360 158 4/29/2025
2025.1119.328 174 4/29/2025
2025.1119.299 159 4/29/2025
2025.1119.287 161 4/29/2025
2025.1116.868 93 4/26/2025
2025.1116.841 83 4/26/2025
2025.1116.444 89 4/26/2025
2025.1115.498 131 4/25/2025
2025.1115.491 136 4/25/2025
2025.1100.365 186 4/10/2025
2025.1100.336 180 4/10/2025
2025.1100.331 183 4/10/2025
2025.1098.108 175 4/8/2025
2025.1093.291 187 4/3/2025
2025.1091.38 187 4/1/2025
2025.1091.26 188 4/1/2025
2025.1090.237 173 3/31/2025
2025.1089.1386 172 3/30/2025
2025.1083.515 420 3/24/2025
2025.1083.408 353 3/24/2025
2025.1083.398 352 3/24/2025
2025.1083.125 346 3/24/2025
2025.1080.41 161 3/21/2025
2025.1075.357 234 3/16/2025
2025.1073.332 153 3/14/2025
2025.1072.541 182 3/13/2025
2025.1072.536 162 3/13/2025
2025.1064.602 245 3/5/2025
2025.1064.546 223 3/5/2025
2025.1062.589 172 3/3/2025
2025.1061.513 127 3/2/2025
2025.1060.490 116 3/1/2025
2025.1059.134 128 2/28/2025
2025.1057.1020 125 2/26/2025
2025.1056.584 123 2/25/2025
2025.1050.282 142 2/19/2025
2025.1050.232 138 2/19/2025
2025.1049.55 152 2/18/2025
2025.1045.285 130 2/14/2025
2025.1043.288 116 2/12/2025
2025.1043.246 121 2/12/2025
2025.1043.197 126 2/12/2025
2025.1043.180 112 2/12/2025
2025.1043.108 113 2/12/2025
2025.1043.38 111 2/12/2025
2025.1043.27 112 2/12/2025
2025.1042.725 129 2/11/2025
2025.1042.690 119 2/11/2025
2025.1042.688 124 2/11/2025
2025.1042.418 117 2/11/2025
2025.1042.215 124 2/11/2025
2025.1042.203 121 2/11/2025
2025.1042.184 114 2/11/2025
2025.1042.142 125 2/11/2025
2025.1042.127 123 2/11/2025
2025.1037.1327 116 2/6/2025
2025.1036.280 122 2/5/2025
2025.1036.55 127 2/5/2025
2025.1035.1387 136 2/4/2025
2025.1031.111 131 1/31/2025
2025.1030.916 125 1/30/2025
2025.1030.895 131 1/30/2025
2025.1030.592 126 1/30/2025
2025.1029.664 108 1/29/2025
2025.1029.632 107 1/29/2025
2025.1029.596 111 1/29/2025
2025.1028.386 104 1/28/2025
2025.1025.723 108 1/25/2025
2025.1025.712 111 1/25/2025
2025.1019.913 116 1/19/2025
2025.1018.374 111 1/18/2025
2025.1018.285 146 1/18/2025
2025.1017.646 105 1/17/2025
2025.1017.379 138 1/17/2025
2025.1016.1370 116 1/16/2025
2025.1016.765 106 1/16/2025
2025.1016.712 111 1/16/2025
2025.1016.550 109 1/16/2025
2025.1016.541 111 1/16/2025
2025.1016.532 111 1/16/2025
2025.1016.325 105 1/16/2025
2025.1016.308 111 1/16/2025
2025.1016.296 103 1/16/2025
2025.1016.237 127 1/16/2025
2025.1016.184 104 1/16/2025
2025.1016.70 108 1/16/2025
2025.1016.6 109 1/16/2025
2025.1015.1438 107 1/16/2025
2025.1015.1437 105 1/16/2025
2025.1015.1411 105 1/15/2025
2025.1015.240 76 1/15/2025
2025.1015.223 68 1/15/2025
2025.1015.183 77 1/15/2025
2025.1014.1342 84 1/14/2025
2025.1014.273 92 1/14/2025
2025.1014.256 97 1/14/2025
2025.1012.440 97 1/12/2025
2025.1012.327 110 1/12/2025
2025.1012.279 105 1/12/2025
2025.1002.636 121 1/2/2025
2025.1001.1435 131 1/2/2025
2025.1001.1397 122 1/1/2025
2025.1001.770 124 1/1/2025
2025.1001.570 131 1/1/2025
2025.1001.558 117 1/1/2025
2025.1001.421 121 1/1/2025
2025.1001.390 123 1/1/2025
2025.1001.234 134 1/1/2025
2025.1001.123 128 1/1/2025
2024.1360.354 125 12/25/2024
2024.1360.60 115 12/25/2024
2024.1360.32 117 12/25/2024
2024.1358.450 115 12/23/2024
2024.1358.359 118 12/23/2024
2024.1358.312 110 12/23/2024
2024.1358.244 122 12/23/2024
2024.1358.120 110 12/23/2024
2024.1348.253 131 12/13/2024
2024.1345.1379 107 12/10/2024
2024.1345.506 107 12/10/2024
2024.1345.379 106 12/10/2024
2024.1345.145 106 12/10/2024
2024.1345.72 111 12/10/2024
2024.1345.69 103 12/10/2024
2024.1345.15 112 12/10/2024
2024.1344.1436 108 12/10/2024
2024.1344.600 119 12/9/2024
2024.1344.411 119 12/9/2024
2024.1340.379 119 12/5/2024
2024.1340.15 128 12/5/2024
2024.1338.786 125 12/3/2024
2024.1338.722 129 12/3/2024
2024.1338.697 117 12/3/2024
2024.1338.639 124 12/3/2024
2024.1338.541 124 12/3/2024
2024.1338.318 114 12/3/2024
2024.1338.298 117 12/3/2024
2024.1338.98 122 12/3/2024
2024.1337.756 124 12/2/2024
2024.1337.634 124 12/2/2024
2024.1337.625 109 12/2/2024
2024.1337.621 117 12/2/2024
2024.1337.594 115 12/2/2024
2024.1337.136 106 12/2/2024
2024.1336.793 128 12/1/2024
2024.1336.773 124 12/1/2024
2024.1336.305 115 12/1/2024
2024.1336.12 133 12/1/2024
2024.1335.1421 122 11/30/2024
2024.1335.1384 121 11/30/2024
2024.1334.1308 124 11/29/2024
2024.1334.764 114 11/29/2024
2024.1334.722 124 11/29/2024
2024.1330.185 119 11/25/2024
2024.1328.505 127 11/23/2024
2024.1328.470 115 11/23/2024
2024.1328.452 118 11/23/2024
2024.1323.910 128 11/18/2024
2024.1323.653 113 11/18/2024
2024.1323.185 111 11/18/2024
2024.1323.49 108 11/18/2024
2024.1322.714 109 11/17/2024
2024.1320.653 119 11/15/2024
2024.1320.619 108 11/15/2024
2024.1320.601 105 11/15/2024
2024.1320.159 111 11/15/2024
2024.1320.98 112 11/15/2024
2024.1320.2 121 11/15/2024
2024.1319.1431 121 11/15/2024
2024.1319.1335 118 11/14/2024
2024.1317.631 121 11/12/2024
2024.1316.330 129 11/11/2024
2024.1311.540 119 11/6/2024
2024.1306.225 115 11/1/2024
2024.1306.199 125 11/1/2024
2024.1306.171 122 11/1/2024
2024.1306.117 127 11/1/2024
2024.1305.506 114 10/31/2024
2024.1305.502 111 10/31/2024
2024.1305.465 110 10/31/2024
2024.1305.442 112 10/31/2024
2024.1305.399 112 10/31/2024
2024.1299.1070 120 10/25/2024
2024.1289.621 132 10/15/2024
2024.1289.338 117 10/15/2024
2024.1277.836 121 10/5/2024
2024.1277.711 122 10/3/2024
2024.1277.695 117 10/3/2024
2024.1270.409 135 9/26/2024
2024.1269.621 136 9/25/2024
2024.1269.619 119 9/25/2024
2024.1269.605 129 9/25/2024
2024.1242.282 136 8/29/2024
2024.1242.261 132 8/29/2024
2024.1242.233 141 8/29/2024
2024.1238.829 148 8/25/2024
2024.1238.327 148 8/25/2024
2024.1225.297 138 8/12/2024
2024.1205.140 133 7/23/2024
2024.1204.110 140 7/22/2024
2024.1204.62 128 7/22/2024
2024.1190.491 140 7/8/2024
2024.1177.305 135 6/25/2024
2024.1168.700 149 6/16/2024
2024.1168.649 137 6/16/2024
2024.1168.535 144 6/16/2024
2024.1167.643 136 6/15/2024
2024.1166.989 135 6/14/2024
2024.1166.818 132 6/14/2024
2024.1166.535 140 6/14/2024
2024.1166.422 133 6/14/2024
2024.1166.362 133 6/14/2024
2024.1166.360 138 6/14/2024
2024.1165.1212 135 6/13/2024
2024.1165.1160 131 6/13/2024
2024.1165.1019 134 6/13/2024
2024.1165.978 135 6/13/2024
2024.1165.920 129 6/13/2024
2024.1165.908 146 6/13/2024
2024.1165.873 138 6/13/2024
2024.1165.830 132 6/13/2024
2024.1165.806 134 6/13/2024
2024.1165.794 138 6/13/2024
2024.1165.792 144 6/13/2024
2024.1165.761 138 6/13/2024
2024.1165.743 135 6/13/2024
2024.1165.735 139 6/13/2024
2024.1165.713 138 6/13/2024
2024.1165.640 126 6/13/2024
2024.1165.574 140 6/13/2024
2024.1165.466 129 6/13/2024
2024.1165.417 133 6/13/2024
2024.1165.392 133 6/13/2024
2024.1164.341 124 6/12/2024
2024.1155.941 147 6/3/2024
2024.1140.783 150 5/19/2024
2024.1140.692 133 5/19/2024
2024.1140.673 139 5/19/2024
2024.1129.506 142 5/8/2024
2024.1128.831 153 5/7/2024
2024.1124.465 119 5/3/2024
2024.1123.1162 126 5/2/2024
2024.1123.1117 111 5/2/2024
2024.1123.1050 100 5/2/2024
2024.1122.352 138 5/1/2024
2024.1122.233 140 5/1/2024
2024.1115.1101 141 4/24/2024
2024.1115.1048 125 4/24/2024
2024.1115.932 128 4/24/2024
2024.1115.858 138 4/24/2024
2024.1115.665 140 4/24/2024
2024.1115.648 133 4/24/2024
2024.1115.591 142 4/24/2024
2024.1101.390 139 4/10/2024
2024.1100.741 146 4/9/2024
2024.1099.526 145 4/8/2024
2024.1099.466 142 4/8/2024
2024.1098.573 141 4/7/2024
2024.1095.977 142 4/4/2024
2024.1095.847 137 4/4/2024
2024.1095.604 144 4/4/2024
2024.1095.485 162 4/4/2024
2024.1094.930 137 4/3/2024
2024.1094.910 150 4/3/2024
2024.1094.387 154 4/3/2024
2024.1094.313 138 4/3/2024
2024.1093.520 139 4/2/2024
2024.1092.240 137 4/1/2024
2024.1089.1425 151 3/29/2024
2024.1089.983 144 3/29/2024
2024.1089.942 132 3/29/2024
2024.1089.2 147 3/29/2024
2024.1088.1343 137 3/28/2024
2024.1088.1139 146 3/28/2024
2024.1088.875 114 3/28/2024
2024.1088.700 127 3/28/2024
2024.1088.603 146 3/28/2024
2024.1088.590 148 3/28/2024
2024.1088.575 140 3/28/2024
2024.1088.561 146 3/28/2024
2024.1088.506 149 3/28/2024
2024.1088.18 148 3/28/2024
2024.1087.1181 159 3/27/2024
2024.1087.1173 146 3/27/2024
2024.1087.1143 149 3/27/2024
2024.1087.1108 130 3/27/2024
2024.1087.950 147 3/27/2024
2024.1087.939 136 3/27/2024
2024.1087.252 147 3/27/2024
2024.1070.736 145 3/10/2024
2024.1049.1437 154 2/19/2024
2024.1036.571 152 2/5/2024
2024.1036.508 137 2/5/2024
2024.1032.1204 141 2/1/2024
2024.1032.1133 140 2/1/2024
2024.1032.1122 161 2/1/2024
2024.1032.1071 131 2/1/2024
2024.1032.940 134 2/1/2024
2024.1031.912 133 1/31/2024
2024.1031.893 133 1/31/2024
2024.1031.851 121 1/31/2024
2024.1031.829 131 1/31/2024
2024.1031.386 129 1/31/2024
2024.1031.318 148 1/31/2024
2024.1017.460 158 1/17/2024
2024.1017.420 133 1/17/2024
2024.1017.163 134 1/17/2024
2024.1016.414 669 1/16/2024
2024.1012.167 154 1/12/2024
2024.1011.406 148 1/11/2024
2024.1010.315 162 1/10/2024
2023.1358.326 190 12/24/2023
2023.1351.473 154 12/17/2023
2023.1351.445 153 12/17/2023
2023.1351.432 163 12/17/2023
2023.1350.478 156 12/16/2023
2023.1344.600 171 12/10/2023
2023.1344.529 213 12/10/2023
2023.1339.582 172 12/5/2023
2023.1338.1072 174 12/4/2023
2023.1336.844 173 12/2/2023
2023.1335.378 167 12/1/2023
2023.1335.236 163 12/1/2023
2023.1335.203 158 12/1/2023