Class RecursionGuard
Namespace: AutoFixture.Kernel
Assembly: AutoFixture.dll
Base class for recursion handling. Tracks requests and reacts when a recursion point in the specimen creation process is detected.
public class RecursionGuard : ISpecimenBuilderNode, ISpecimenBuilder, IEnumerable<ISpecimenBuilder>, IEnumerableInheritance
Implements
ISpecimenBuilderNode, ISpecimenBuilder, IEnumerable<ISpecimenBuilder>, IEnumerable
Inherited Members
object.GetType(), object.MemberwiseClone(), object.ToString(), object.Equals(object?), object.Equals(object?, object?), object.ReferenceEquals(object?, object?), object.GetHashCode()
Extension Methods
SpecimenFactory.Create<T>(ISpecimenBuilder), SpecimenFactory.CreateMany<T>(ISpecimenBuilder), SpecimenFactory.CreateMany<T>(ISpecimenBuilder, int), SpecimenCommand.Do<T>(ISpecimenBuilder, Action<T>), SpecimenCommand.Do<T1, T2>(ISpecimenBuilder, Action<T1, T2>), SpecimenCommand.Do<T1, T2, T3>(ISpecimenBuilder, Action<T1, T2, T3>), SpecimenCommand.Do<T1, T2, T3, T4>(ISpecimenBuilder, Action<T1, T2, T3, T4>), SpecimenQuery.Get<T, TResult>(ISpecimenBuilder, Func<T, TResult>), SpecimenQuery.Get<T1, T2, TResult>(ISpecimenBuilder, Func<T1, T2, TResult>), SpecimenQuery.Get<T1, T2, T3, TResult>(ISpecimenBuilder, Func<T1, T2, T3, TResult>), SpecimenQuery.Get<T1, T2, T3, T4, TResult>(ISpecimenBuilder, Func<T1, T2, T3, T4, TResult>), SpecimenBuilderNode.GraphEquals(ISpecimenBuilderNode, ISpecimenBuilderNode), SpecimenBuilderNode.GraphEquals(ISpecimenBuilderNode, ISpecimenBuilderNode, IEqualityComparer<ISpecimenBuilder>), CustomizationExtensions.ToCustomization(ISpecimenBuilder)
Constructors
RecursionGuard(ISpecimenBuilder, IRecursionHandler)
Initializes a new instance of the RecursionGuard class.
public RecursionGuard(ISpecimenBuilder builder, IRecursionHandler recursionHandler)Parameters
builder ISpecimenBuilder
recursionHandler IRecursionHandler
RecursionGuard(ISpecimenBuilder, IRecursionHandler, int)
Initializes a new instance of the RecursionGuard class.
public RecursionGuard(ISpecimenBuilder builder, IRecursionHandler recursionHandler, int recursionDepth)Parameters
builder ISpecimenBuilder
recursionHandler IRecursionHandler
recursionDepth int
RecursionGuard(ISpecimenBuilder, IRecursionHandler, IEqualityComparer, int)
Initializes a new instance of the RecursionGuard
class.
public RecursionGuard(ISpecimenBuilder builder, IRecursionHandler recursionHandler, IEqualityComparer comparer, int recursionDepth)Parameters
builder ISpecimenBuilder
recursionHandler IRecursionHandler
comparer IEqualityComparer
recursionDepth int
Properties
Builder
Gets the decorated builder supplied via the constructor.
public ISpecimenBuilder Builder { get; }Property Value
Comparer
Gets the comparer supplied via the constructor.
public IEqualityComparer Comparer { get; }Property Value
RecordedRequests
Gets the recorded requests so far.
protected IEnumerable RecordedRequests { get; }Property Value
RecursionDepth
The recursion depth at which the request will be treated as a recursive request.
public int RecursionDepth { get; }Property Value
RecursionHandler
Gets the recursion handler originally supplied as a constructor argument.
public IRecursionHandler RecursionHandler { get; }Property Value
Methods
Compose(IEnumerable<ISpecimenBuilder>)
Composes the supplied builders.
public virtual ISpecimenBuilderNode Compose(IEnumerable<ISpecimenBuilder> builders)Parameters
builders IEnumerable<ISpecimenBuilder>
The builders to compose.
Returns
A ISpecimenBuilderNode instance.
Remarks
Note to implementers:
The intent of this method is to compose the supplied
builders into a new instance of the type
implementing `ISpecimenBuilderNode`. Thus, the
concrete return type is expected to the same type as the type
implementing the method. However, it is not considered a failure to
deviate from this idiom - it would just not be a mainstream
implementation.
The returned instance is normally expected to contain the builders supplied as an argument, but again this is not strictly required. The implementation may decide to filter the sequence or add to it during composition.
Create(object, ISpecimenContext)
Creates a new specimen based on a request.
public object Create(object request, ISpecimenContext context)Parameters
request object
The request that describes what to create.
context ISpecimenContext
A context that can be used to create other specimens.
Returns
The requested specimen if possible; otherwise a NoSpecimen instance.
Remarks
The request can be any object, but will often be a
`Type` or other `MemberInfo` instances.
Note to implementers: Implementations are expected to return a `NoSpecimen` instance if they can't satisfy the request.
GetEnumerator()
public virtual IEnumerator<ISpecimenBuilder> GetEnumerator()