From 0232e47f4daeff2523edd345279f4acd53f6c40a Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Tue, 5 Oct 2021 17:36:15 +0200 Subject: [PATCH] Backwards compatibility for older workflow instances --- src/core/Elsa.Abstractions/Models/WorkflowInstance.cs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/Elsa.Abstractions/Models/WorkflowInstance.cs b/src/core/Elsa.Abstractions/Models/WorkflowInstance.cs index c3c864087..7121e5dd5 100644 --- a/src/core/Elsa.Abstractions/Models/WorkflowInstance.cs +++ b/src/core/Elsa.Abstractions/Models/WorkflowInstance.cs @@ -34,7 +34,14 @@ namespace Elsa.Models public WorkflowInputReference? Input { get; set; } public WorkflowOutputReference? Output { get; set; } public IDictionary> ActivityData { get; set; } = new Dictionary>(); - public IDictionary Metadata { get; set; } = new Dictionary(); + + // To prevent NRE when old workflow instances are deserialized. + private IDictionary? _metadata; + public IDictionary Metadata + { + get { return _metadata ??= new Dictionary(); } + set => _metadata = value ?? new Dictionary(); + } public HashSet BlockingActivities { @@ -43,7 +50,6 @@ namespace Elsa.Models } public object? GetMetadata(string key) => Metadata.TryGetValue(key, out var value) ? value : default; - public void SetMetadata(string key, object? value) { Metadata[key] = value;