Nogic.ThrowHelperExtensions
1.0.0
dotnet add package Nogic.ThrowHelperExtensions --version 1.0.0
NuGet\Install-Package Nogic.ThrowHelperExtensions -Version 1.0.0
<PackageReference Include="Nogic.ThrowHelperExtensions" Version="1.0.0"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
<PackageVersion Include="Nogic.ThrowHelperExtensions" Version="1.0.0" />
<PackageReference Include="Nogic.ThrowHelperExtensions"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>
paket add Nogic.ThrowHelperExtensions --version 1.0.0
#r "nuget: Nogic.ThrowHelperExtensions, 1.0.0"
#:package Nogic.ThrowHelperExtensions@1.0.0
#addin nuget:?package=Nogic.ThrowHelperExtensions&version=1.0.0
#tool nuget:?package=Nogic.ThrowHelperExtensions&version=1.0.0
ThrowHelperExtensions
Use ThrowHelper methods (ex. ArgumentException.ThrowIfNull) on your elderly .NET project
Usage
1. Set LangVersion to C# 14
This package uses Extension members feature on C# 14.
Please Add below on your .csproj or Directory.Build.props.
<PropertyGroup>
<LangVersion>14</LangVersion>
</PropertyGroup>
2. Add Package
dotnet add package Nogic.ThrowHelperExtensions
3. Use throw helpers
namespace Samples;
public class Sample
{
public string Value1 { get; }
public Sample(string value1)
{
// On .NET 6.0 or higher, it calls `ArgumentNullException.ThrowIfNull` directly.
// On others, it calls `System.ExceptionPolyfills.ThrowIfNull` polyfill via extension members.
ArgumentNullException.ThrowIfNull(value1);
this.Value1 = value1;
}
}
API
ArgumentException.ThrowIfNullOrEmpty(string?, string?)ArgumentException.ThrowIfNullOrWhiteSpace(string?, string?)ArgumentNullException.ThrowIfNull(object?, string?)ArgumentNullException.ThrowIfNull(void*, string?)- Set
AllowUnsafeBlockstotruein your project file to use this overload.
- Set
ObjectDisposedException.ThrowIf(bool, object)ObjectDisposedException.ThrowIf(bool, Type)ArgumentOutOfRangeException.ThrowIfEqual<T>(T, T, string?)ArgumentOutOfRangeException.ThrowIfGreaterThan<T>(T, T, string?) where T : IComparable<T>ArgumentOutOfRangeException.ThrowIfGreaterThanOrEqual<T>(T, T, string?) where T : IComparable<T>ArgumentOutOfRangeException.ThrowIfLessThan<T>(T, T, string?) where T : IComparable<T>ArgumentOutOfRangeException.ThrowIfLessThanOrEqual<T>(T, T, string?) where T : IComparable<T>ArgumentOutOfRangeException.ThrowIfNegative<T>(T, string?) where T : INumberBase<T>[^1]ArgumentOutOfRangeException.ThrowIfNegativeOrZero<T>(T, string?) where T : INumberBase<T>[^1]ArgumentOutOfRangeException.ThrowIfNotEqual<T>(T, T, string?)ArgumentOutOfRangeException.ThrowIfZero<T>(T, string?) where T : INumberBase<T>[^1]
[^1]: INumberBase<T> is not available in .NET 6.0 or below (including .NET Standard 2.0).
So, this method only has overloads for the built-in numeric types. (byte, sbyte, short, ushort, int, uint, long, ulong, float, double, decimal, nint, nuint, char)
Limitations
- Except for
ArgumentNullException.ThrowIfNull, exception messages are not localized. - Unlike .NET 8.0 and 9.0, these methods do not have
IEquatable<T>constraint on type parameterT. (based on .NET 10.0+ source code)ArgumentOutOfRangeException.ThrowIfEqual<T>(T, T, string?)ArgumentOutOfRangeException.ThrowIfNotEqual<T>(T, T, string?)
- The generated class
System.ExceptionPolyfillsisinternal.
Options
ThrowHelperExtensionsGenerateAttributes
By default, this generator will generate necessary attribute types. (ex. DoesNotReturnAttribute)
If you want to disable attribute generation (for example, use other generator like PolySharp), you can set the following MSBuild property in your project file:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ThrowHelperExtensionsGenerateAttributes>false</ThrowHelperExtensionsGenerateAttributes>
</PropertyGroup>
</Project>
Learn more about Target Frameworks and .NET Standard.
This package has no dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Nogic.ThrowHelperExtensions:
| Package | Downloads |
|---|---|
|
WithOtherGenerator
Package Description |
GitHub repositories
This package is not used by any popular GitHub repositories.