Skip to content

Change IClassConstructor.Create return type to ValueTask<object> #4787

Description

@thomhurst

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    breakingenhancementNew feature or requestv2Deferred to v2 release

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions