Tenekon.MethodOverloads.SourceGenerator
0.0.5
Prefix Reserved
There is a newer prerelease version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Tenekon.MethodOverloads.SourceGenerator --version 0.0.5
NuGet\Install-Package Tenekon.MethodOverloads.SourceGenerator -Version 0.0.5
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="Tenekon.MethodOverloads.SourceGenerator" Version="0.0.5" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Tenekon.MethodOverloads.SourceGenerator" Version="0.0.5" />
<PackageReference Include="Tenekon.MethodOverloads.SourceGenerator" />
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 Tenekon.MethodOverloads.SourceGenerator --version 0.0.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Tenekon.MethodOverloads.SourceGenerator, 0.0.5"
#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 Tenekon.MethodOverloads.SourceGenerator@0.0.5
#: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=Tenekon.MethodOverloads.SourceGenerator&version=0.0.5
#tool nuget:?package=Tenekon.MethodOverloads.SourceGenerator&version=0.0.5
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Tenekon.MethodOverloads.SourceGenerator
A C# source generator that creates combinatorial extension method overloads by treating a selected parameter window as optional and emitting legal, unique subsequences.
Quickstart
- Mark a method with
[GenerateOverloads]or a type with[GenerateMethodOverloads(Matchers = ...)]. - (Optional) Add
[OverloadGenerationOptions(...)]to control matching and output. - Build the project. Generated overloads appear in
MethodOverloads_<Namespace>.g.cs.
MSBuild options
Emit attributes only (skip overload generation):
<PropertyGroup>
<TenekonMethodOverloadsSourceGeneratorAttributesOnly>true</TenekonMethodOverloadsSourceGeneratorAttributesOnly>
</PropertyGroup>
Examples
A) GenerateOverloadsAttribute
Input:
namespace Demo;
using Tenekon.MethodOverloads.SourceGenerator;
public sealed class Calculator
{
[GenerateOverloads(Begin = nameof(unit))]
public void Add(int value, string? unit, bool useRounding) { }
}
Output:
namespace Demo;
public static class MethodOverloads
{
public static void Add(this Calculator source, int value) =>
source.Add(value, unit: default(string?), useRounding: default(bool));
public static void Add(this Calculator source, int value, string? unit) =>
source.Add(value, unit, useRounding: default(bool));
public static void Add(this Calculator source, int value, bool useRounding) =>
source.Add(value, unit: default(string?), useRounding);
}
B) Method-level matcher
Input:
namespace Demo;
using Tenekon.MethodOverloads.SourceGenerator;
public sealed class Customer
{
[GenerateOverloads(Matchers = [typeof(CustomerMatcher)])]
public void Update(string name, int loyaltyLevel, bool isActive) { }
}
internal interface CustomerMatcher
{
[GenerateOverloads(nameof(paramB))]
void Update(int paramA, bool paramB);
}
Output:
namespace Demo;
public static class MethodOverloads
{
public static void Update(this Customer source, string name, int loyaltyLevel) =>
source.Update(name, loyaltyLevel, isActive: default(bool));
}
C) Type-level matcher (static target)
Input:
namespace Demo;
using Tenekon.MethodOverloads.SourceGenerator;
[GenerateMethodOverloads(Matchers = [typeof(MathMatchers)])]
public static class MathUtils
{
public static void Multiply(int left, int right, bool checkedOverflow) { }
}
internal interface MathMatchers
{
[GenerateOverloads(nameof(paramB))]
void Multiply(int paramA, bool paramB);
}
Output:
namespace Demo;
public static class MethodOverloads
{
extension(MathUtils)
{
public static void Multiply(int left, int right) =>
MathUtils.Multiply(left, right, checkedOverflow: default(bool));
}
}
Key behavior
- Generates overloads from a contiguous optional window of parameters.
- Omits only legal subsets (no ref/out/in removal).
- Dedupes by signature and never duplicates existing overloads.
See docs/generator.md for full behavior and rules.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.0.6-rc.1 | 0 | 2/16/2026 |
| 0.0.6-alpha.6 | 31 | 2/15/2026 |
| 0.0.6-alpha.4 | 22 | 2/15/2026 |
| 0.0.6-alpha.3 | 28 | 2/15/2026 |
| 0.0.6-alpha.1 | 29 | 2/14/2026 |
| 0.0.5 | 116 | 2/6/2026 |
| 0.0.5-rc.18 | 41 | 2/6/2026 |
| 0.0.5-rc.17 | 43 | 2/6/2026 |
| 0.0.5-rc.15 | 41 | 2/5/2026 |
| 0.0.5-rc.14 | 40 | 2/5/2026 |
| 0.0.5-rc.13 | 49 | 2/5/2026 |
Loading failed
Initial public release. Generates combinatorial extension method overloads from a marked optional parameter window, dedupes signatures, and avoids invalid overloads.