Redpoint.StringEnum 2025.1139.605

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.1139.605
                    
NuGet\Install-Package Redpoint.StringEnum -Version 2025.1139.605
                    
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.1139.605" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Redpoint.StringEnum" Version="2025.1139.605" />
                    
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.1139.605
                    
#r "nuget: Redpoint.StringEnum, 2025.1139.605"
                    
#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.
#addin nuget:?package=Redpoint.StringEnum&version=2025.1139.605
                    
Install as a Cake Addin
#tool nuget:?package=Redpoint.StringEnum&version=2025.1139.605
                    
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.1175.340 158 6/24/2025
2025.1174.62 114 6/23/2025
2025.1171.352 94 6/20/2025
2025.1169.413 137 6/18/2025
2025.1166.1191 147 6/15/2025
2025.1166.1178 130 6/15/2025
2025.1166.1177 132 6/15/2025
2025.1159.445 115 6/8/2025
2025.1159.364 109 6/8/2025
2025.1159.324 107 6/8/2025
2025.1155.438 139 6/4/2025
2025.1141.1424 145 5/21/2025
2025.1140.383 136 5/20/2025
2025.1140.377 145 5/20/2025
2025.1139.983 151 5/19/2025
2025.1139.952 145 5/19/2025
2025.1139.941 139 5/19/2025
2025.1139.855 135 5/19/2025
2025.1139.850 137 5/19/2025
2025.1139.837 140 5/19/2025
2025.1139.811 138 5/19/2025
2025.1139.806 143 5/19/2025
2025.1139.796 131 5/19/2025
2025.1139.729 134 5/19/2025
2025.1139.719 148 5/19/2025
2025.1139.706 148 5/19/2025
2025.1139.694 138 5/19/2025
2025.1139.679 139 5/19/2025
2025.1139.662 139 5/19/2025
2025.1139.638 134 5/19/2025
2025.1139.628 141 5/19/2025
2025.1139.626 139 5/19/2025
2025.1139.619 138 5/19/2025
2025.1139.605 138 5/19/2025
2025.1139.600 142 5/19/2025
2025.1139.583 138 5/19/2025
2025.1139.573 136 5/19/2025
2025.1139.564 137 5/19/2025
2025.1139.552 148 5/19/2025
2025.1139.543 141 5/19/2025
2025.1138.909 140 5/18/2025
2025.1136.150 201 5/16/2025
2025.1135.267 216 5/15/2025
2025.1135.143 221 5/15/2025
2025.1133.453 234 5/13/2025
2025.1133.351 227 5/13/2025
2025.1133.349 228 5/13/2025
2025.1133.347 236 5/13/2025
2025.1130.236 76 5/10/2025
2025.1129.831 109 5/9/2025
2025.1129.346 133 5/9/2025
2025.1129.345 130 5/9/2025
2025.1121.1370 158 5/1/2025
2025.1119.450 160 4/29/2025
2025.1119.436 154 4/29/2025
2025.1119.409 156 4/29/2025
2025.1119.388 159 4/29/2025
2025.1119.360 151 4/29/2025
2025.1119.328 172 4/29/2025
2025.1119.299 157 4/29/2025
2025.1119.287 157 4/29/2025
2025.1116.868 89 4/26/2025
2025.1116.841 80 4/26/2025
2025.1116.444 85 4/26/2025
2025.1115.498 127 4/25/2025
2025.1115.491 132 4/25/2025
2025.1100.365 180 4/10/2025
2025.1100.336 175 4/10/2025
2025.1100.331 179 4/10/2025
2025.1098.108 169 4/8/2025
2025.1093.291 184 4/3/2025
2025.1091.38 181 4/1/2025
2025.1091.26 180 4/1/2025
2025.1090.237 170 3/31/2025
2025.1089.1386 166 3/30/2025
2025.1083.515 416 3/24/2025
2025.1083.408 346 3/24/2025
2025.1083.398 342 3/24/2025
2025.1083.125 343 3/24/2025
2025.1080.41 154 3/21/2025
2025.1075.357 226 3/16/2025
2025.1073.332 147 3/14/2025
2025.1072.541 175 3/13/2025
2025.1072.536 158 3/13/2025
2025.1064.602 239 3/5/2025
2025.1064.546 218 3/5/2025
2025.1062.589 167 3/3/2025
2025.1061.513 121 3/2/2025
2025.1060.490 111 3/1/2025
2025.1059.134 120 2/28/2025
2025.1057.1020 115 2/26/2025
2025.1056.584 116 2/25/2025
2025.1050.282 136 2/19/2025
2025.1050.232 131 2/19/2025
2025.1049.55 145 2/18/2025
2025.1045.285 124 2/14/2025
2025.1043.288 111 2/12/2025
2025.1043.246 113 2/12/2025
2025.1043.197 122 2/12/2025
2025.1043.180 106 2/12/2025
2025.1043.108 106 2/12/2025
2025.1043.38 104 2/12/2025
2025.1043.27 109 2/12/2025
2025.1042.725 121 2/11/2025
2025.1042.690 112 2/11/2025
2025.1042.688 118 2/11/2025
2025.1042.418 110 2/11/2025
2025.1042.215 118 2/11/2025
2025.1042.203 118 2/11/2025
2025.1042.184 110 2/11/2025
2025.1042.142 122 2/11/2025
2025.1042.127 119 2/11/2025
2025.1037.1327 110 2/6/2025
2025.1036.280 117 2/5/2025
2025.1036.55 124 2/5/2025
2025.1035.1387 131 2/4/2025
2025.1031.111 126 1/31/2025
2025.1030.916 119 1/30/2025
2025.1030.895 125 1/30/2025
2025.1030.592 122 1/30/2025
2025.1029.664 102 1/29/2025
2025.1029.632 101 1/29/2025
2025.1029.596 106 1/29/2025
2025.1028.386 99 1/28/2025
2025.1025.723 102 1/25/2025
2025.1025.712 105 1/25/2025
2025.1019.913 110 1/19/2025
2025.1018.374 107 1/18/2025
2025.1018.285 140 1/18/2025
2025.1017.646 102 1/17/2025
2025.1017.379 133 1/17/2025
2025.1016.1370 112 1/16/2025
2025.1016.765 103 1/16/2025
2025.1016.712 104 1/16/2025
2025.1016.550 106 1/16/2025
2025.1016.541 106 1/16/2025
2025.1016.532 107 1/16/2025
2025.1016.325 102 1/16/2025
2025.1016.308 105 1/16/2025
2025.1016.296 97 1/16/2025
2025.1016.237 123 1/16/2025
2025.1016.184 98 1/16/2025
2025.1016.70 102 1/16/2025
2025.1016.6 105 1/16/2025
2025.1015.1438 102 1/16/2025
2025.1015.1437 98 1/16/2025
2025.1015.1411 101 1/15/2025
2025.1015.240 69 1/15/2025
2025.1015.223 61 1/15/2025
2025.1015.183 70 1/15/2025
2025.1014.1342 79 1/14/2025
2025.1014.273 89 1/14/2025
2025.1014.256 92 1/14/2025
2025.1012.440 94 1/12/2025
2025.1012.327 104 1/12/2025
2025.1012.279 99 1/12/2025
2025.1002.636 114 1/2/2025
2025.1001.1435 122 1/2/2025
2025.1001.1397 113 1/1/2025
2025.1001.770 117 1/1/2025
2025.1001.570 123 1/1/2025
2025.1001.558 110 1/1/2025
2025.1001.421 115 1/1/2025
2025.1001.390 116 1/1/2025
2025.1001.234 129 1/1/2025
2025.1001.123 121 1/1/2025
2024.1360.354 118 12/25/2024
2024.1360.60 106 12/25/2024
2024.1360.32 107 12/25/2024
2024.1358.450 108 12/23/2024
2024.1358.359 108 12/23/2024
2024.1358.312 105 12/23/2024
2024.1358.244 115 12/23/2024
2024.1358.120 102 12/23/2024
2024.1348.253 123 12/13/2024
2024.1345.1379 102 12/10/2024
2024.1345.506 103 12/10/2024
2024.1345.379 100 12/10/2024
2024.1345.145 103 12/10/2024
2024.1345.72 106 12/10/2024
2024.1345.69 100 12/10/2024
2024.1345.15 109 12/10/2024
2024.1344.1436 105 12/10/2024
2024.1344.600 114 12/9/2024
2024.1344.411 114 12/9/2024
2024.1340.379 116 12/5/2024
2024.1340.15 120 12/5/2024
2024.1338.786 118 12/3/2024
2024.1338.722 123 12/3/2024
2024.1338.697 115 12/3/2024
2024.1338.639 116 12/3/2024
2024.1338.541 115 12/3/2024
2024.1338.318 106 12/3/2024
2024.1338.298 109 12/3/2024
2024.1338.98 116 12/3/2024
2024.1337.756 115 12/2/2024
2024.1337.634 120 12/2/2024
2024.1337.625 106 12/2/2024
2024.1337.621 110 12/2/2024
2024.1337.594 108 12/2/2024
2024.1337.136 101 12/2/2024
2024.1336.793 121 12/1/2024
2024.1336.773 120 12/1/2024
2024.1336.305 109 12/1/2024
2024.1336.12 124 12/1/2024
2024.1335.1421 118 11/30/2024
2024.1335.1384 114 11/30/2024
2024.1334.1308 118 11/29/2024
2024.1334.764 109 11/29/2024
2024.1334.722 113 11/29/2024
2024.1330.185 112 11/25/2024
2024.1328.505 121 11/23/2024
2024.1328.470 108 11/23/2024
2024.1328.452 112 11/23/2024
2024.1323.910 122 11/18/2024
2024.1323.653 107 11/18/2024
2024.1323.185 106 11/18/2024
2024.1323.49 102 11/18/2024
2024.1322.714 106 11/17/2024
2024.1320.653 113 11/15/2024
2024.1320.619 106 11/15/2024
2024.1320.601 100 11/15/2024
2024.1320.159 108 11/15/2024
2024.1320.98 108 11/15/2024
2024.1320.2 114 11/15/2024
2024.1319.1431 114 11/15/2024
2024.1319.1335 114 11/14/2024
2024.1317.631 117 11/12/2024
2024.1316.330 123 11/11/2024
2024.1311.540 113 11/6/2024
2024.1306.225 111 11/1/2024
2024.1306.199 121 11/1/2024
2024.1306.171 109 11/1/2024
2024.1306.117 122 11/1/2024
2024.1305.506 106 10/31/2024
2024.1305.502 106 10/31/2024
2024.1305.465 107 10/31/2024
2024.1305.442 107 10/31/2024
2024.1305.399 108 10/31/2024
2024.1299.1070 113 10/25/2024
2024.1289.621 124 10/15/2024
2024.1289.338 112 10/15/2024
2024.1277.836 115 10/5/2024
2024.1277.711 117 10/3/2024
2024.1277.695 113 10/3/2024
2024.1270.409 127 9/26/2024
2024.1269.621 129 9/25/2024
2024.1269.619 116 9/25/2024
2024.1269.605 126 9/25/2024
2024.1242.282 128 8/29/2024
2024.1242.261 126 8/29/2024
2024.1242.233 133 8/29/2024
2024.1238.829 143 8/25/2024
2024.1238.327 146 8/25/2024
2024.1225.297 133 8/12/2024
2024.1205.140 131 7/23/2024
2024.1204.110 135 7/22/2024
2024.1204.62 125 7/22/2024
2024.1190.491 137 7/8/2024
2024.1177.305 131 6/25/2024
2024.1168.700 143 6/16/2024
2024.1168.649 135 6/16/2024
2024.1168.535 141 6/16/2024
2024.1167.643 134 6/15/2024
2024.1166.989 128 6/14/2024
2024.1166.818 130 6/14/2024
2024.1166.535 138 6/14/2024
2024.1166.422 128 6/14/2024
2024.1166.362 128 6/14/2024
2024.1166.360 134 6/14/2024
2024.1165.1212 130 6/13/2024
2024.1165.1160 128 6/13/2024
2024.1165.1019 133 6/13/2024
2024.1165.978 128 6/13/2024
2024.1165.920 124 6/13/2024
2024.1165.908 133 6/13/2024
2024.1165.873 131 6/13/2024
2024.1165.830 127 6/13/2024
2024.1165.806 132 6/13/2024
2024.1165.794 136 6/13/2024
2024.1165.792 139 6/13/2024
2024.1165.761 131 6/13/2024
2024.1165.743 129 6/13/2024
2024.1165.735 135 6/13/2024
2024.1165.713 132 6/13/2024
2024.1165.640 124 6/13/2024
2024.1165.574 136 6/13/2024
2024.1165.466 126 6/13/2024
2024.1165.417 131 6/13/2024
2024.1165.392 128 6/13/2024
2024.1164.341 119 6/12/2024
2024.1155.941 143 6/3/2024
2024.1140.783 148 5/19/2024
2024.1140.692 128 5/19/2024
2024.1140.673 135 5/19/2024
2024.1129.506 135 5/8/2024
2024.1128.831 148 5/7/2024
2024.1124.465 115 5/3/2024
2024.1123.1162 121 5/2/2024
2024.1123.1117 107 5/2/2024
2024.1123.1050 96 5/2/2024
2024.1122.352 136 5/1/2024
2024.1122.233 135 5/1/2024
2024.1115.1101 136 4/24/2024
2024.1115.1048 123 4/24/2024
2024.1115.932 124 4/24/2024
2024.1115.858 133 4/24/2024
2024.1115.665 134 4/24/2024
2024.1115.648 129 4/24/2024
2024.1115.591 137 4/24/2024
2024.1101.390 134 4/10/2024
2024.1100.741 140 4/9/2024
2024.1099.526 142 4/8/2024
2024.1099.466 136 4/8/2024
2024.1098.573 140 4/7/2024
2024.1095.977 139 4/4/2024
2024.1095.847 134 4/4/2024
2024.1095.604 138 4/4/2024
2024.1095.485 159 4/4/2024
2024.1094.930 132 4/3/2024
2024.1094.910 148 4/3/2024
2024.1094.387 148 4/3/2024
2024.1094.313 133 4/3/2024
2024.1093.520 135 4/2/2024
2024.1092.240 133 4/1/2024
2024.1089.1425 149 3/29/2024
2024.1089.983 140 3/29/2024
2024.1089.942 124 3/29/2024
2024.1089.2 145 3/29/2024
2024.1088.1343 135 3/28/2024
2024.1088.1139 141 3/28/2024
2024.1088.875 110 3/28/2024
2024.1088.700 125 3/28/2024
2024.1088.603 140 3/28/2024
2024.1088.590 143 3/28/2024
2024.1088.575 138 3/28/2024
2024.1088.561 139 3/28/2024
2024.1088.506 144 3/28/2024
2024.1088.18 141 3/28/2024
2024.1087.1181 151 3/27/2024
2024.1087.1173 140 3/27/2024
2024.1087.1143 147 3/27/2024
2024.1087.1108 128 3/27/2024
2024.1087.950 142 3/27/2024
2024.1087.939 129 3/27/2024
2024.1087.252 142 3/27/2024
2024.1070.736 141 3/10/2024
2024.1049.1437 147 2/19/2024
2024.1036.571 150 2/5/2024
2024.1036.508 135 2/5/2024
2024.1032.1204 138 2/1/2024
2024.1032.1133 132 2/1/2024
2024.1032.1122 156 2/1/2024
2024.1032.1071 129 2/1/2024
2024.1032.940 127 2/1/2024
2024.1031.912 126 1/31/2024
2024.1031.893 129 1/31/2024
2024.1031.851 117 1/31/2024
2024.1031.829 124 1/31/2024
2024.1031.386 124 1/31/2024
2024.1031.318 143 1/31/2024
2024.1017.460 150 1/17/2024
2024.1017.420 129 1/17/2024
2024.1017.163 132 1/17/2024
2024.1016.414 665 1/16/2024
2024.1012.167 153 1/12/2024
2024.1011.406 144 1/11/2024
2024.1010.315 156 1/10/2024
2023.1358.326 187 12/24/2023
2023.1351.473 152 12/17/2023
2023.1351.445 151 12/17/2023
2023.1351.432 161 12/17/2023
2023.1350.478 154 12/16/2023
2023.1344.600 167 12/10/2023
2023.1344.529 206 12/10/2023
2023.1339.582 164 12/5/2023
2023.1338.1072 171 12/4/2023
2023.1336.844 167 12/2/2023
2023.1335.378 166 12/1/2023
2023.1335.236 160 12/1/2023
2023.1335.203 149 12/1/2023