diff --git a/Runtime/StepArgumentTypeConverter.cs b/Runtime/StepArgumentTypeConverter.cs
new file mode 100644
index 000000000..4b567ede8
--- /dev/null
+++ b/Runtime/StepArgumentTypeConverter.cs
@@ -0,0 +1,29 @@
+using System;
+
+namespace TechTalk.SpecFlow
+{
+ public interface IStepArgumentTypeConverter
+ {
+ object Convert(string value, Type typeToConvertTo);
+ }
+
+ public class StepStepArgumentTypeConverter : IStepArgumentTypeConverter
+ {
+ public object Convert(string value, Type typeToConvertTo)
+ {
+ object convertedArg;
+
+ var paramType = typeToConvertTo;
+ if (paramType.BaseType == typeof(Enum))
+ {
+ convertedArg = Enum.Parse(paramType, value, true);
+ }
+ else
+ {
+ convertedArg = System.Convert.ChangeType(value, paramType);
+ }
+
+ return convertedArg;
+ }
+ }
+}
\ No newline at end of file
diff --git a/Runtime/TechTalk.SpecFlow.csproj b/Runtime/TechTalk.SpecFlow.csproj
index a0c67bc38..abffc489a 100644
--- a/Runtime/TechTalk.SpecFlow.csproj
+++ b/Runtime/TechTalk.SpecFlow.csproj
@@ -59,6 +59,7 @@
VersionInfo.cs
+
diff --git a/Runtime/TestRunner.cs b/Runtime/TestRunner.cs
index 80e2e3d02..d925aee55 100644
--- a/Runtime/TestRunner.cs
+++ b/Runtime/TestRunner.cs
@@ -382,6 +382,7 @@ private TimeSpan InvokeAction(Delegate action, object[] arguments, MethodInfo me
private object[] GetExecuteArguments(BindingMatch match)
{
+ IStepArgumentTypeConverter typeConverter = new StepStepArgumentTypeConverter();
List