Problem
IClassConstructor.Create() returns Task<object>. Most DI containers resolve instances synchronously, so implementations pay an unnecessary Task allocation on every test class creation.
// Current
Task<object> Create(Type type, ClassConstructorMetadata classConstructorMetadata);
Proposed Change
// Proposed
ValueTask<object> Create(Type type, ClassConstructorMetadata classConstructorMetadata);
Synchronous implementations can return new ValueTask<object>(instance) with zero allocation.
Notes
- Source-breaking — existing
IClassConstructor implementations must change their return type
- Deferred to v2
Problem
IClassConstructor.Create()returnsTask<object>. Most DI containers resolve instances synchronously, so implementations pay an unnecessaryTaskallocation on every test class creation.Proposed Change
Synchronous implementations can return
new ValueTask<object>(instance)with zero allocation.Notes
IClassConstructorimplementations must change their return type