Add support for controlling when to serialize properties of type IActivity
This commit is contained in:
parent
e6ce1cebb3
commit
7ba4dc5039
|
|
@ -43,7 +43,7 @@ public abstract class Composite : Activity, IVariableContainer
|
|||
/// </summary>
|
||||
[Port]
|
||||
[Browsable(false)]
|
||||
//[JsonExpandable] // Composite activities' Root is intended to be constructed from code only.
|
||||
[JsonExpandable] // Composite activities' Root is intended to be constructed from code only.
|
||||
public IActivity Root { get; set; } = new Sequence();
|
||||
|
||||
/// <inheritdoc />
|
||||
|
|
|
|||
|
|
@ -22,13 +22,14 @@ public class JsonExpandableConverter<T> : JsonConverter<T>
|
|||
{
|
||||
writer.WriteStartObject();
|
||||
|
||||
var properties = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
|
||||
var properties = value?.GetType().GetProperties(BindingFlags.Public | BindingFlags.Instance) ?? Array.Empty<PropertyInfo>();
|
||||
var newOptions = new JsonSerializerOptions(options);
|
||||
|
||||
newOptions.Converters.RemoveWhere(x => x is JsonExpandableConverterFactory<T>);
|
||||
|
||||
foreach (var property in properties)
|
||||
{
|
||||
if (property.GetCustomAttribute<JsonIgnoreAttribute>() != null)
|
||||
continue;
|
||||
|
||||
if (property.GetCustomAttribute<JsonExpandableAttribute>() != null)
|
||||
continue;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
using System.ComponentModel;
|
||||
using Elsa.Common.Models;
|
||||
using Elsa.Extensions;
|
||||
using Elsa.Workflows.Core.Attributes;
|
||||
using Elsa.Workflows.Core.Contracts;
|
||||
using Elsa.Workflows.Core.Models;
|
||||
using Elsa.Workflows.Core.Services;
|
||||
|
|
@ -20,6 +21,7 @@ public class WorkflowDefinitionActivity : Activity, IInitializable
|
|||
/// <summary>
|
||||
/// The activity to schedule for execution.
|
||||
/// </summary>
|
||||
[JsonExpandable]
|
||||
public IActivity Root { get; set; } = default!;
|
||||
|
||||
/// <summary>
|
||||
|
|
|
|||
Loading…
Reference in a new issue