Skip to content

Commit 4a0f4ea

Browse files
authored
Merge pull request #1166 from rapmue/type-resolving
added a type resolver to be replaced by another implementation later.
2 parents 951ec7c + fcbb47a commit 4a0f4ea

File tree

5 files changed

+36
-7
lines changed

5 files changed

+36
-7
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
using System;
2+
using System.Linq;
3+
4+
namespace WorkflowCore.Interface
5+
{
6+
public interface ITypeResolver
7+
{
8+
Type FindType(string name);
9+
}
10+
}

src/WorkflowCore.DSL/ServiceCollectionExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ public static class ServiceCollectionExtensions
99
{
1010
public static IServiceCollection AddWorkflowDSL(this IServiceCollection services)
1111
{
12+
services.AddTransient<ITypeResolver, TypeResolver>();
1213
services.AddTransient<IDefinitionLoader, DefinitionLoader>();
1314
return services;
1415
}

src/WorkflowCore.DSL/Services/DefinitionLoader.cs

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ namespace WorkflowCore.Services.DefinitionStorage
1717
public class DefinitionLoader : IDefinitionLoader
1818
{
1919
private readonly IWorkflowRegistry _registry;
20+
private readonly ITypeResolver _typeResolver;
2021

21-
public DefinitionLoader(IWorkflowRegistry registry)
22+
public DefinitionLoader(IWorkflowRegistry registry, ITypeResolver typeResolver)
2223
{
2324
_registry = registry;
25+
_typeResolver = typeResolver;
2426
}
2527

2628
public WorkflowDefinition LoadDefinition(string source, Func<string, DefinitionSourceV1> deserializer)
@@ -220,10 +222,11 @@ private void AttachOutputs(StepSourceV1 source, Type dataType, Type stepType, Wo
220222
var dataParameter = Expression.Parameter(dataType, "data");
221223

222224

223-
if(output.Key.Contains(".") || output.Key.Contains("["))
225+
if (output.Key.Contains(".") || output.Key.Contains("["))
224226
{
225227
AttachNestedOutput(output, step, source, sourceExpr, dataParameter);
226-
}else
228+
}
229+
else
227230
{
228231
AttachDirectlyOutput(output, step, dataType, sourceExpr, dataParameter);
229232
}
@@ -259,11 +262,11 @@ private void AttachDirectlyOutput(KeyValuePair<string, string> output, WorkflowS
259262

260263
}
261264

262-
private void AttachNestedOutput( KeyValuePair<string, string> output, WorkflowStep step, StepSourceV1 source, LambdaExpression sourceExpr, ParameterExpression dataParameter)
265+
private void AttachNestedOutput(KeyValuePair<string, string> output, WorkflowStep step, StepSourceV1 source, LambdaExpression sourceExpr, ParameterExpression dataParameter)
263266
{
264267
PropertyInfo propertyInfo = null;
265268
String[] paths = output.Key.Split('.');
266-
269+
267270
Expression targetProperty = dataParameter;
268271

269272
bool hasAddOutput = false;
@@ -352,7 +355,7 @@ private void AttachOutcomes(StepSourceV1 source, Type dataType, WorkflowStep ste
352355

353356
private Type FindType(string name)
354357
{
355-
return Type.GetType(name, true, true);
358+
return _typeResolver.FindType(name);
356359
}
357360

358361
private static Action<IStepBody, object, IStepExecutionContext> BuildScalarInputAction(KeyValuePair<string, object> input, ParameterExpression dataParameter, ParameterExpression contextParameter, ParameterExpression environmentVarsParameter, PropertyInfo stepProperty)
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using WorkflowCore.Interface;
5+
6+
namespace WorkflowCore.Services.DefinitionStorage
7+
{
8+
public class TypeResolver : ITypeResolver
9+
{
10+
public Type FindType(string name)
11+
{
12+
return Type.GetType(name, true, true);
13+
}
14+
}
15+
}

test/WorkflowCore.UnitTests/Services/DefinitionStorage/DefinitionLoaderTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class DefinitionLoaderTests
1919
public DefinitionLoaderTests()
2020
{
2121
_registry = A.Fake<IWorkflowRegistry>();
22-
_subject = new DefinitionLoader(_registry);
22+
_subject = new DefinitionLoader(_registry, new TypeResolver());
2323
}
2424

2525
[Fact(DisplayName = "Should register workflow")]

0 commit comments

Comments
 (0)