Class CollectionVariableRoot<TKey, TElement, TValidationResult>
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
TKeyKey type.
TElementElement type.
TValidationResultValidation result type.
- Inheritance
-
CollectionVariableRoot<TKey, TElement, TValidationResult>
- Implements
-
ICollectionVariableRoot<TKey, TElement, TValidationResult>IReadOnlyCollectionVariableRoot<TKey, TElement, TValidationResult>IReadOnlyCollectionVariableRoot<TKey, TElement>
- 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>?)
Creates a new CollectionVariableRoot<TKey, TElement, TValidationResult> instance.
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
elementsIEnumerable<TElement>Initial collection of elements.
elementChangesCollectionVariableRootChanges<TKey, TElement>Element changes that define the collection of current elements.
keySelectorFunc<TElement, TKey>Element's key selector.
keyComparerIEqualityComparer<TKey>Element key equality comparer.
errorsValidatorIValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>Collection of elements validator that marks result as errors.
warningsValidatorIValidator<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>?)
Creates a new CollectionVariableRoot<TKey, TElement, TValidationResult> instance.
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
elementsIEnumerable<TElement>Initial collection of elements.
keySelectorFunc<TElement, TKey>Element's key selector.
keyComparerIEqualityComparer<TKey>Element key equality comparer.
errorsValidatorIValidator<ICollectionVariableRootElements<TKey, TElement>, TValidationResult>Collection of elements validator that marks result as errors.
warningsValidatorIValidator<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
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
elementsIEnumerable<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
elementTElementElement to add.
Returns
- VariableChangeResult
Result of this change attempt.
Change(CollectionVariableRootChanges<TKey, TElement>)
Changes the Elements.
public VariableChangeResult Change(CollectionVariableRootChanges<TKey, TElement> changes)
Parameters
changesCollectionVariableRootChanges<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
elementTElementElement 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
elementTElementElement 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
elementTElementElement 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
changesCollectionVariableRootChanges<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
eventCollectionVariableRootChangeEvent<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
eventCollectionVariableRootValidationEvent<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
keysIEnumerable<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
keyTKeyKey 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
elementsIEnumerable<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
elementsIEnumerable<TElement>Initial elements to set.
elementChangesCollectionVariableRootChanges<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
keysIEnumerable<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
keyTKeyKey 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
enabledboolSpecifies 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
enabledboolSpecifies whether or not the read-only state should be enabled.