Class SequenceGeneratorBase<T>
- Namespace
- LfrlAnvil.Generators
- Assembly
- LfrlAnvil.Core.dll
Represents a generic sequence generator of objects within specified range.
public abstract class SequenceGeneratorBase<T> : ISequenceGenerator<T>, IBoundGenerator<T>, IGenerator<T>, IGenerator where T : IComparable<T>
Type Parameters
T
Object type.
- Inheritance
-
SequenceGeneratorBase<T>
- Implements
-
IGenerator<T>
- Derived
- Inherited Members
- Extension Methods
Constructors
SequenceGeneratorBase(Bounds<T>, T, T)
Creates a new SequenceGeneratorBase<T> instance.
protected SequenceGeneratorBase(Bounds<T> bounds, T start, T step)
Parameters
bounds
Bounds<T>Range of values that can be generated.
start
TNext value to generate.
step
TDifference between two consecutively generated values.
Exceptions
- ArgumentOutOfRangeException
When
bounds
do not containstart
.
Properties
Bounds
Range of values that can be generated.
public Bounds<T> Bounds { get; }
Property Value
- Bounds<T>
Step
Difference between two consecutively generated values.
public T Step { get; }
Property Value
- T
Methods
AddStep(T)
Adds Step to the previously generated value in order to calculate the next value to generate.
protected abstract T AddStep(T value)
Parameters
value
TPreviously generated value.
Returns
- T
Next value to generate.
Exceptions
- OverflowException
When an arithmetic overflow occurred.
Generate()
Generates a new object.
public T Generate()
Returns
- T
Generated object.
Exceptions
- ValueGenerationException
When object could not be generated.
Reset(T)
Resets the generator by explicitly setting the next value to generate.
public void Reset(T start)
Parameters
start
TNext value to generate.
Exceptions
- ArgumentOutOfRangeException
When Bounds> do not contain
start
.
TryGenerate(out T)
Attempts to generate a new object.
public bool TryGenerate(out T result)
Parameters
result
Tout parameter that returns generated object, if successful.
Returns
- bool
true when object was generated successfully, otherwise false.