DotNext by .NET Foundation and Contributors

<PackageReference Include="DotNext" Version="5.17.2" />

 IBuildable<TSelf, TBuilder>

public interface IBuildable<TSelf, TBuilder> where TSelf : IBuildable<TSelf, TBuilder> where TBuilder : ISupplier<TSelf>, IResettable
Represents builder pattern contract.
using System.Runtime.CompilerServices; namespace DotNext.Patterns { [NullableContext(1)] public interface IBuildable<[Nullable(0)] out TSelf, [Nullable(0)] out TBuilder> where TSelf : IBuildable<TSelf, TBuilder> where TBuilder : ISupplier<TSelf>, IResettable { TBuilder CreateBuilder(); } }