From a21751672d20de641f134bccdfda4d81f3e179a6 Mon Sep 17 00:00:00 2001 From: Alexander Rose Date: Sun, 17 Sep 2023 20:08:38 +0200 Subject: [PATCH] make type name helper aware of generics (#4442) * make type name helper aware of generics * fix ActivityTypeNameHelper.GenerateTypeName for generic types specifying a type name in the activity attribute --- .../Helpers/ActivityTypeNameHelper.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/modules/Elsa.Workflows.Core/Helpers/ActivityTypeNameHelper.cs b/src/modules/Elsa.Workflows.Core/Helpers/ActivityTypeNameHelper.cs index 713ebcec2..06904b663 100644 --- a/src/modules/Elsa.Workflows.Core/Helpers/ActivityTypeNameHelper.cs +++ b/src/modules/Elsa.Workflows.Core/Helpers/ActivityTypeNameHelper.cs @@ -15,7 +15,17 @@ public static class ActivityTypeNameHelper public static string GenerateTypeName(Type type, string? ns) { var activityAttr = type.GetCustomAttribute(); - var typeName = activityAttr?.Type ?? type.Name; + string typeName; + + if (type.IsGenericType) + { + var sanitizedTypeName = activityAttr?.Type ?? type.Name.Substring(0, type.Name.IndexOf("`", StringComparison.InvariantCulture)); + var genericArgs = type.GenericTypeArguments.Select(type1 => GenerateTypeName(type1, null)); + typeName = $"{sanitizedTypeName}<{string.Join(',', genericArgs)}>"; + } + else + typeName = activityAttr?.Type ?? type.Name; + return ns != null ? $"{ns}.{typeName}" : typeName; }