Table of Contents

Class CollectionVariableRoot<TKey, TElement, TValidationResult>

Namespace
LfrlAnvil.Reactive.State
Assembly
LfrlAnvil.Reactive.State.dll

Represents a generic collection variable of VariableNode elements that listens to its children's events and propagates them.

public class CollectionVariableRoot<TKey, TElement, TValidationResult> : VariableNode, ICollectionVariableRoot<TKey, TElement, TValidationResult>, IReadOnlyCollectionVariableRoot<TKey, TElement, TValidationResult>, IReadOnlyCollectionVariableRoot<TKey, TElement>, IReadOnlyCollectionVariableRoot, IMutableVariableNode, IVariableNode, IDisposable where TKey : notnull where TElement : VariableNode

Type Parameters

TKey

Key type.

TElement

Element type.

TValidationResult

Validation result type.

Inheritance
CollectionVariableRoot<TKey, TElement, TValidationResult>
Implements
ICollectionVariableRoot<TKey, TElement, TValidationResult>
IReadOnlyCollectionVariableRoot<TKey, TElement, TValidationResult>
Inherited Members
Extension Methods

Constructors

CollectionVariableRoot(IEnumerable<TElement>, CollectionVariableRootChanges<TKey, TElement>, Func<TElement, TKey>, IEqualityComparer<TKey>?, IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>?, IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>?)

public CollectionVariableRoot(IEnumerable<TElement> elements, CollectionVariableRootChanges<TKey, TElement> elementChanges, Func<TElement, TKey> keySelector, IEqualityComparer<TKey>? keyComparer = null, IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>? errorsValidator = null, IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>? warningsValidator = null)

Parameters

elements IEnumerable<TElement>

Initial collection of elements.

elementChanges CollectionVariableRootChanges<TKey, TElement>

Element changes that define the collection of current elements.

keySelector Func<TElement, TKey>

Element's key selector.

keyComparer IEqualityComparer<TKey>

Element key equality comparer.

errorsValidator IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>

Collection of elements validator that marks result as errors.

warningsValidator IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>

Collection of elements validator that marks result as warnings.

CollectionVariableRoot(IEnumerable<TElement>, Func<TElement, TKey>, IEqualityComparer<TKey>?, IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>?, IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>?)

public CollectionVariableRoot(IEnumerable<TElement> elements, Func<TElement, TKey> keySelector, IEqualityComparer<TKey>? keyComparer = null, IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>? errorsValidator = null, IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>? warningsValidator = null)

Parameters

elements IEnumerable<TElement>

Initial collection of elements.

keySelector Func<TElement, TKey>

Element's key selector.

keyComparer IEqualityComparer<TKey>

Element key equality comparer.

errorsValidator IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>

Collection of elements validator that marks result as errors.

warningsValidator IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>

Collection of elements validator that marks result as warnings.

Properties

Elements

Current collection of elements.

public ICollectionVariableRootElements<TKey, TElement> Elements { get; }

Property Value

ICollectionVariableRootElements<TKey, TElement>

Errors

Collection of current validation errors.

public Chain<TValidationResult> Errors { get; }

Property Value

Chain<TValidationResult>

ErrorsValidator

Collection of elements validator that marks result as errors.

public IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult> ErrorsValidator { get; }

Property Value

IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>

InitialElements

Initial collection of elements.

public IReadOnlyDictionary<TKey, TElement> InitialElements { get; }

Property Value

IReadOnlyDictionary<TKey, TElement>

KeySelector

Element's key selector.

public Func<TElement, TKey> KeySelector { get; }

Property Value

Func<TElement, TKey>

OnChange

Event stream that emits events when variable's elements change.

public override sealed IEventStream<CollectionVariableRootChangeEvent<TKey, TElement, TValidationResult>> OnChange { get; }

Property Value

IEventStream<CollectionVariableRootChangeEvent<TKey, TElement, TValidationResult>>

OnValidate

Event stream that emits events when variable's validation state changes.

public override sealed IEventStream<CollectionVariableRootValidationEvent<TKey, TElement, TValidationResult>> OnValidate { get; }

Property Value

IEventStream<CollectionVariableRootValidationEvent<TKey, TElement, TValidationResult>>

State

Specifies this node's current state.

public override sealed VariableState State { get; }

Property Value

VariableState

Warnings

Collection of current validation warnings.

public Chain<TValidationResult> Warnings { get; }

Property Value

Chain<TValidationResult>

WarningsValidator

Collection of elements validator that marks result as warnings.

public IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult> WarningsValidator { get; }

Property Value

IValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>

Methods

Add(IEnumerable<TElement>)

Adds a collection of elements to this collection.

public VariableChangeResult Add(IEnumerable<TElement> elements)

Parameters

elements IEnumerable<TElement>

Collection of elements to add.

Returns

VariableChangeResult

Result of this change attempt.

Add(TElement)

Adds an element to this collection.

public VariableChangeResult Add(TElement element)

Parameters

element TElement

Element to add.

Returns

VariableChangeResult

Result of this change attempt.

Change(CollectionVariableRootChanges<TKey, TElement>)

Changes the Elements.

public VariableChangeResult Change(CollectionVariableRootChanges<TKey, TElement> changes)

Parameters

changes CollectionVariableRootChanges<TKey, TElement>

Changes to make to Elements.

Returns

VariableChangeResult

Result of this change attempt.

Clear()

Removes all elements from this collection.

public VariableChangeResult Clear()

Returns

VariableChangeResult

Result of this change attempt.

ClearValidation()

Removes all errors and warnings from this variable.

public void ClearValidation()

ContinueElementAddition(TElement)

Performs optional element addition validation.

[Pure]
protected virtual bool ContinueElementAddition(TElement element)

Parameters

element TElement

Element to add.

Returns

bool

true to continue element addition, otherwise false.

ContinueElementRemoval(TElement)

Performs optional element removal validation.

[Pure]
protected virtual bool ContinueElementRemoval(TElement element)

Parameters

element TElement

Element to remove.

Returns

bool

true to continue element removal, otherwise false.

ContinueElementRestoration(TElement)

Performs optional element restoration validation.

[Pure]
protected virtual bool ContinueElementRestoration(TElement element)

Parameters

element TElement

Element to restore.

Returns

bool

true to continue element restoration, otherwise false.

Dispose()

Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.

public virtual void Dispose()

GetChildren()

Returns the collection of all children nodes.

[Pure]
public override IEnumerable<IVariableNode> GetChildren()

Returns

IEnumerable<IVariableNode>

New IEnumerable<T> instance.

ModifyChangeInput(CollectionVariableRootChanges<TKey, TElement>)

Allows to modify element changes that define the collection of current elements.

[Pure]
protected virtual CollectionVariableRootChanges<TKey, TElement> ModifyChangeInput(CollectionVariableRootChanges<TKey, TElement> changes)

Parameters

changes CollectionVariableRootChanges<TKey, TElement>

Element changes that define the collection of current elements.

Returns

CollectionVariableRootChanges<TKey, TElement>

Actual element changes to perform.

OnPublishChangeEvent(CollectionVariableRootChangeEvent<TKey, TElement, TValidationResult>)

Emits the provided change event.

protected virtual void OnPublishChangeEvent(CollectionVariableRootChangeEvent<TKey, TElement, TValidationResult> @event)

Parameters

event CollectionVariableRootChangeEvent<TKey, TElement, TValidationResult>

Event to publish.

OnPublishValidationEvent(CollectionVariableRootValidationEvent<TKey, TElement, TValidationResult>)

Emits the provided validation event.

protected virtual void OnPublishValidationEvent(CollectionVariableRootValidationEvent<TKey, TElement, TValidationResult> @event)

Parameters

event CollectionVariableRootValidationEvent<TKey, TElement, TValidationResult>

Event to publish.

Refresh()

Refreshes this variable.

public void Refresh()

RefreshValidation()

Refreshes this variable's validation.

public void RefreshValidation()

Remove(IEnumerable<TKey>)

Removes elements associated with the provided collection of keys.

public VariableChangeResult Remove(IEnumerable<TKey> keys)

Parameters

keys IEnumerable<TKey>

Collection of keys to remove.

Returns

VariableChangeResult

Result of this change attempt.

Remove(TKey)

Removes an element associated with the provided key.

public VariableChangeResult Remove(TKey key)

Parameters

key TKey

Key to remove.

Returns

VariableChangeResult

Result of this change attempt.

Reset(IEnumerable<TElement>)

Removes all errors and warnings from this variable and resets InitialElements and Elements.

public void Reset(IEnumerable<TElement> elements)

Parameters

elements IEnumerable<TElement>

Initial elements to set.

Reset(IEnumerable<TElement>, CollectionVariableRootChanges<TKey, TElement>)

Removes all errors and warnings from this variable and resets InitialElements and Elements.

public void Reset(IEnumerable<TElement> elements, CollectionVariableRootChanges<TKey, TElement> elementChanges)

Parameters

elements IEnumerable<TElement>

Initial elements to set.

elementChanges CollectionVariableRootChanges<TKey, TElement>

Element changes that define the collection of current elements.

Restore(IEnumerable<TKey>)

Restores removed elements associated with the provided collection of keys.

public VariableChangeResult Restore(IEnumerable<TKey> keys)

Parameters

keys IEnumerable<TKey>

Collection of keys to restore.

Returns

VariableChangeResult

Result of this change attempt.

Restore(TKey)

Restores a removed element associated with the provided key.

public VariableChangeResult Restore(TKey key)

Parameters

key TKey

Key to restore.

Returns

VariableChangeResult

Result of this change attempt.

SetReadOnly(bool)

Changes the read-only state of this variable.

public void SetReadOnly(bool enabled)

Parameters

enabled bool

Specifies whether or not the read-only state should be enabled.

ToString()

Returns a string representation of this CollectionVariableRoot<TKey, TElement, TValidationResult> instance.

[Pure]
public override string ToString()

Returns

string

String representation.

Update()

Updates errors, warnings and state of this variable.

protected virtual void Update()

UpdateReadOnly(bool)

Updates state of this variable due to read-only state change.

protected virtual void UpdateReadOnly(bool enabled)

Parameters

enabled bool

Specifies whether or not the read-only state should be enabled.