31 lines
955 B
C#
31 lines
955 B
C#
using System.Linq.Expressions;
|
|
|
|
namespace TerminalUI.ExpressionTrackers;
|
|
|
|
public sealed class ParameterTracker : ExpressionTrackerBase
|
|
{
|
|
private readonly ExpressionParameterTrackerCollection _trackerCollection;
|
|
private readonly string _parameterName;
|
|
|
|
public ParameterTracker(
|
|
ParameterExpression parameterExpression,
|
|
ExpressionParameterTrackerCollection trackerCollection,
|
|
string parameterName)
|
|
{
|
|
_trackerCollection = trackerCollection;
|
|
_parameterName = parameterName;
|
|
|
|
trackerCollection.ValueChanged += TrackerCollectionOnValueChanged;
|
|
|
|
UpdateValueAndChangeTrackers();
|
|
}
|
|
|
|
private void TrackerCollectionOnValueChanged(string parameterName, object? newValue)
|
|
=> UpdateValueAndChangeTrackers();
|
|
|
|
protected override object? ComputeValue()
|
|
{
|
|
_trackerCollection.Values.TryGetValue(_parameterName, out var v);
|
|
return v;
|
|
}
|
|
} |