Fix Container type (#6584)

Fixes an incorrect type use: IContainer lives in System.ComponentModel and does not represent a container activity. The correct type to use is `Container`.
This commit is contained in:
Sipke Schoorstra 2025-04-13 20:26:31 +02:00 committed by GitHub
parent 612fd26388
commit d92512f087
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -10,27 +10,13 @@ using Elsa.Workflows.Memory;
using Elsa.Workflows.Models;
using Elsa.Workflows.UIHints;
using Humanizer;
using Container = Elsa.Workflows.Activities.Container;
namespace Elsa.Workflows;
/// <inheritdoc />
public class ActivityDescriber : IActivityDescriber
public class ActivityDescriber(IPropertyDefaultValueResolver defaultValueResolver, IActivityFactory activityFactory, IPropertyUIHandlerResolver propertyUIHandlerResolver) : IActivityDescriber
{
//private readonly IPropertyOptionsResolver _optionsResolver;
private readonly IPropertyDefaultValueResolver _defaultValueResolver;
private readonly IActivityFactory _activityFactory;
private readonly IPropertyUIHandlerResolver _propertyUIHandlerResolver;
/// <summary>
/// Constructor.
/// </summary>
public ActivityDescriber(IPropertyDefaultValueResolver defaultValueResolver, IActivityFactory activityFactory, IPropertyUIHandlerResolver propertyUIHandlerResolver)
{
//_optionsResolver = optionsResolver;
_defaultValueResolver = defaultValueResolver;
_activityFactory = activityFactory;
_propertyUIHandlerResolver = propertyUIHandlerResolver;
}
/// <inheritdoc />
public async Task<ActivityDescriptor> DescribeActivityAsync([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicProperties)] Type activityType, CancellationToken cancellationToken = default)
{
@ -90,14 +76,14 @@ public class ActivityDescriber : IActivityDescriber
Ports = allPorts.ToList(),
Inputs = (await DescribeInputPropertiesAsync(inputProperties, cancellationToken)).ToList(),
Outputs = (await DescribeOutputPropertiesAsync(outputProperties, cancellationToken)).ToList(),
IsContainer = typeof(IContainer).IsAssignableFrom(activityType),
IsContainer = typeof(Container).IsAssignableFrom(activityType),
IsBrowsable = browsableAttr == null || browsableAttr.Browsable,
IsStart = isStart,
IsTerminal = isTerminal,
Attributes = attributes,
Constructor = context =>
{
var activity = _activityFactory.Create(activityType, context);
var activity = activityFactory.Create(activityType, context);
activity.Type = fullTypeName;
return activity;
}
@ -158,7 +144,7 @@ public class ActivityDescriber : IActivityDescriber
if (wrappedPropertyType.IsNullableType())
wrappedPropertyType = wrappedPropertyType.GetTypeOfNullable();
var uiSpecification = await _propertyUIHandlerResolver.GetUIPropertiesAsync(propertyInfo, null, cancellationToken);
var uiSpecification = await propertyUIHandlerResolver.GetUIPropertiesAsync(propertyInfo, null, cancellationToken);
return new InputDescriptor
(
@ -172,7 +158,7 @@ public class ActivityDescriber : IActivityDescriber
descriptionAttribute?.Description ?? inputAttribute?.Description,
inputAttribute?.Category,
inputAttribute?.Order ?? 0,
_defaultValueResolver.GetDefaultValue(propertyInfo),
defaultValueResolver.GetDefaultValue(propertyInfo),
inputAttribute?.DefaultSyntax,
inputAttribute?.IsReadOnly ?? false,
inputAttribute?.IsBrowsable ?? true,