Skip to content

Extension ICircularDependencyService

Paul Keller edited this page Mar 14, 2026 · 5 revisions

Use this extension to control how circular dependencies are handled during object creation.

When to use it

  • You use the SetDependencyDefault method to define a default property, that depends on another property.
  • You have a circular SetDependencyDefault configuration, where property A depends on property B, and property B depends on property A in some way
  • You want to provide default values for circular dependencies, instead of throwing an exception.

Minimal implementation

using ConstructorCustomization.AutoFixture.Customization.Application.Ports;
public sealed class CircularDependencyService : ICircularDependencyService
{
    public object? HandleCircularDependency(string propertyName, Func<IFixture, object?> valueFactory)
    {
        return null;
    }
}

public sealed class CircularDependencyServiceFactory : ICircularDependencyServiceFactory
{
    public ICircularDependencyService Create() => new CircularDependencyService();
}

Wire it in

Call UseCircularDependencyServiceFactory inside your Configure override:

public class MyCustomization : ConstructorCustomization<MyType, MyCustomization>
{
    protected override void Configure()
    {
        UseCircularDependencyServiceFactory(new CircularDependencyServiceFactory());
    }
}

Default behavior

By default, circular dependencies will cause a CircularDependencyException to be thrown.

Clone this wiki locally