![]() |
VOOZH | about |
dotnet add package FastGenericNew.SourceGenerator --version 3.3.1
NuGet\Install-Package FastGenericNew.SourceGenerator -Version 3.3.1
<PackageReference Include="FastGenericNew.SourceGenerator" Version="3.3.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
</PackageReference>
<PackageVersion Include="FastGenericNew.SourceGenerator" Version="3.3.1" />Directory.Packages.props
<PackageReference Include="FastGenericNew.SourceGenerator"> <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets> </PackageReference>Project file
paket add FastGenericNew.SourceGenerator --version 3.3.1
#r "nuget: FastGenericNew.SourceGenerator, 3.3.1"
#:package FastGenericNew.SourceGenerator@3.3.1
#addin nuget:?package=FastGenericNew.SourceGenerator&version=3.3.1Install as a Cake Addin
#tool nuget:?package=FastGenericNew.SourceGenerator&version=3.3.1Install as a Cake Tool
The ultimate fast and powerful alternative to Activator.CreateInstance<T> / new T()
✔️ The best CreateInstance ever
Activator.CreateInstance<T>PublishTrimmed Support🪛 Modern Compiler Integration
🔥 Latest C#/.NET Features Support
You should only use one of them
dotnet add package FastGenericNew --version 3.3.0
<ItemGroup>
<PackageReference Include="FastGenericNew" Version="3.3.0" />
</ItemGroup>
dotnet add package FastGenericNew.SourceGenerator --version 3.3.0
<ItemGroup>
<PackageReference Include="FastGenericNew.SourceGenerator" Version="3.3.0" />
</ItemGroup>
.NET Standard 2.0 or above
C# 8.0 or above
Roslyn 4.0.1 or above
Modern IDE (Optional) [VS2022, Rider, VSCode]
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));
{
// ...
}
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
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
👁 Benchmark Result of Reference Types
👁 Benchmark Result of Value Types
FastGenericNew is licensed under the license.
Learn more about Target Frameworks and .NET Standard.
This package is not used by any NuGet packages.
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 3.3.1 | 3,652 | 8/15/2024 |
| 3.3.0 | 526 | 8/15/2024 |
| 3.1.0-preview1 | 2,218 | 3/18/2022 |
| 3.0.0-preview2.1 | 282 | 3/12/2022 |
| 3.0.0-preview2 | 341 | 3/6/2022 |
| 3.0.0-preview1 | 372 | 3/5/2022 |