Refactor reference handling to use a wrapper class

Replaced direct use of `CrossScopedReferenceHandler` with `PerCallReferenceHandlerWrapper` for improved abstraction and reusability. Updated `ApplyOptions` to leverage the new wrapper, simplifying reference resolver management. Commented out redundant code to streamline the implementation.
This commit is contained in:
Sipke Schoorstra 2025-01-06 17:13:20 +01:00
parent 506a36574b
commit d2777f70de
2 changed files with 20 additions and 7 deletions

View file

@ -24,4 +24,12 @@ public class CrossScopedReferenceHandler : ReferenceHandler
/// </summary>
/// <returns>The reference resolver.</returns>
public ReferenceResolver GetResolver() => _rootedResolver!;
}
public class PerCallReferenceHandlerWrapper : ReferenceHandler
{
public override ReferenceResolver CreateResolver()
{
return new CrossScopedReferenceHandler().CreateResolver();
}
}

View file

@ -126,14 +126,19 @@ public class JsonWorkflowStateSerializer : ConfigurableSerializer, IWorkflowStat
return JsonSerializer.Deserialize<T>(serializedState, options)!;
}
/// <inheritdoc />
public override JsonSerializerOptions GetOptions()
// /// <inheritdoc />
// public override JsonSerializerOptions GetOptions()
// {
// var options = base.GetOptions();
// return new JsonSerializerOptions(options)
// {
// ReferenceHandler = new CrossScopedReferenceHandler()
// };
// }
public override void ApplyOptions(JsonSerializerOptions options)
{
var options = base.GetOptions();
return new JsonSerializerOptions(options)
{
ReferenceHandler = new CrossScopedReferenceHandler()
};
options.ReferenceHandler = new PerCallReferenceHandlerWrapper();
}
/// <inheritdoc />