FastGenericNew 3.3.1
dotnet add package FastGenericNew --version 3.3.1
NuGet\Install-Package FastGenericNew -Version 3.3.1
<PackageReference Include="FastGenericNew" Version="3.3.1" />
<PackageVersion Include="FastGenericNew" Version="3.3.1" />
<PackageReference Include="FastGenericNew" />
paket add FastGenericNew --version 3.3.1
#r "nuget: FastGenericNew, 3.3.1"
#:package FastGenericNew@3.3.1
#addin nuget:?package=FastGenericNew&version=3.3.1
#tool nuget:?package=FastGenericNew&version=3.3.1
FastGenericNew  
  
 
The ultimate fast and powerful alternative to Activator.CreateInstance<T> / new T()
✨ Features
- ✔️ The best - CreateInstanceever- Up to 50x faster than Activator.CreateInstance<T>
- Generic Parameters Support
- Zero boxing/unboxing
- TryGetValue-like TryFastNew API
- Link Mode PublishTrimmedSupport
- Non-Public Constructor Support
- No Generic Constraints
- Compatible with .NET Standard 2.0
- Multiple backend implementations
- Heavily tested on Win/Mac/Linux
 
- Up to 50x faster than 
- 🪛 Modern Compiler Integration - Source Generator v2 (Incremental Generator)
- Highly Configurable (Props)
- Multi-threaded Generation
 
- 🔥 Latest C#/.NET Features Support - C# 8 Nullable Support
- C# 10 Parameterless struct constructors Support (Both invokes or not)
- WebAssembly Support
 
🔧 Installation
You should only use one of them
Pre-Compiled Version
dotnet add package FastGenericNew --version 3.3.0
<ItemGroup>
  <PackageReference Include="FastGenericNew" Version="3.3.0" />
</ItemGroup>
SourceGenerator Version
dotnet add package FastGenericNew.SourceGenerator --version 3.3.0
<ItemGroup>
  <PackageReference Include="FastGenericNew.SourceGenerator" Version="3.3.0" />
</ItemGroup>
SourceGeneratorV2 requires
.NET Standard 2.0 or above
C# 8.0 or above
Roslyn 4.0.1 or above
Modern IDE (Optional) [VS2022, Rider, VSCode]
📖 Examples
using FastGenericNew;
// Simply replace 'Activator' to 'FastNew'
var obj = FastNew.CreateInstance<T>();
// With parameter(s)
var obj2 = FastNew.CreateInstance<T, string>("text");
var obj3 = FastNew.CreateInstance<T, string, int>("text", 0);
// Try pattern
// NOTE: The try pattern will only check if the constructor can be called.
//       It will not catch or handle any exceptions thrown in the constructor.
if (FastNew.TryCreateInstance<T, string>("arg0", out T result));
{
    // ...
}
Notes
With .NET Framework,
Activator.CreateInstance<T>()invokes the parameterless constructor of ValueType if
the constraint iswhere T : new()but appears to ignore the parameterless constructor if the constraint iswhere T : struct.
ButFastNew.CreateInstance<T>()will always invoke the parameterless constructor if it's available.If you don't want to invoke the parameterless constructor of ValueType, consider using
FastNew.NewOrDefault<T>()which will never invoke the parameterless constructor ofValueType
🚀 Benchmark
Environment
BenchmarkDotNet=v0.13.1, OS=Windows 10.0.22000
AMD Ryzen 9 3900X, 1 CPU, 24 logical and 12 physical cores
.NET SDK=6.0.200-preview.22055.15
  [Host]             : .NET 6.0.2 (6.0.222.6406), X64 RyuJIT
  .NET 5.0           : .NET 5.0.14 (5.0.1422.5710), X64 RyuJIT
  .NET 6.0           : .NET 6.0.2 (6.0.222.6406), X64 RyuJIT
  .NET Framework 4.8 : .NET Framework 4.8 (4.8.4470.0), X64 RyuJIT
Reference Types
Value Types
📜 License
FastGenericNew is licensed under the MIT license.
| Product | Versions Compatible and additional computed target framework versions. | 
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 is compatible. 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 is compatible. 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 is compatible. | 
| .NET Framework | net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 is compatible. 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. | 
- 
                                                    .NETFramework 4.6.1- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
 
- 
                                                    .NETFramework 4.8- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
 
- 
                                                    .NETStandard 2.0- System.Reflection.Emit.Lightweight (>= 4.7.0)
- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
 
- 
                                                    .NETStandard 2.1- System.Runtime.CompilerServices.Unsafe (>= 6.0.0)
 
- 
                                                    net6.0- No dependencies.
 
- 
                                                    net8.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 | 
|---|---|---|
| 3.3.1 | 7,549 | 8/15/2024 | 
| 3.3.0 | 268 | 8/15/2024 | 
| 3.1.0-preview1 | 9,732 | 3/18/2022 | 
| 3.0.0-preview2.1 | 248 | 3/12/2022 | 
| 3.0.0-preview2 | 309 | 3/6/2022 | 
| 3.0.0-preview1 | 298 | 3/5/2022 | 

