Refactor variable merging logic in ActivityExecutionContext
Replaced LINQ-based logic with a dictionary approach to merge variables. This ensures that variables are consistently merged by either name or ID when name is absent. It improves code clarity and handles edge cases more robustly.
This commit is contained in:
parent
24bd64b8b4
commit
882ea8cf57
|
|
@ -124,7 +124,20 @@ public partial class ActivityExecutionContext : IExecutionContext, IDisposable
|
|||
{
|
||||
var containerVariables = (Activity as IVariableContainer)?.Variables ?? Enumerable.Empty<Variable>();
|
||||
var dynamicVariables = DynamicVariables;
|
||||
return containerVariables.Concat(dynamicVariables).DistinctBy(x => x.Name);
|
||||
var mergedVariables = new Dictionary<string, Variable>();
|
||||
|
||||
foreach (var containerVariable in containerVariables)
|
||||
{
|
||||
var name = !string.IsNullOrEmpty(containerVariable.Name) ? containerVariable.Name : containerVariable.Id;
|
||||
mergedVariables[name] = containerVariable;
|
||||
}
|
||||
|
||||
foreach (var dynamicVariable in dynamicVariables)
|
||||
{
|
||||
var name = !string.IsNullOrEmpty(dynamicVariable.Name) ? dynamicVariable.Name : dynamicVariable.Id;
|
||||
mergedVariables[name] = dynamicVariable;
|
||||
}
|
||||
return mergedVariables.Values;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue