Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 20 additions & 10 deletions dotnet/src/dotnetframework/GxClasses/Services/ReflectionHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
namespace GeneXus.Application
{
public class ReflectionHelper
{
const string ISO_8601_TIME_SEPARATOR= "T";
{
const string ISO_8601_TIME_SEPARATOR = "T";
const string ISO_8601_TIME_SEPARATOR_1 = ":";
public static void CallBCMethod(object instance, String methodName, IList<string> inParametersValues)
{
Expand Down Expand Up @@ -43,7 +43,8 @@ public static Dictionary<string, object> CallMethodPattern(object instance, Stri
MethodInfo methodInfo = instanceType.GetMethod(memberInfo.Name, BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
return CallMethodImpl(instance, methodInfo, parameters, context);
}
public static Dictionary<string, object> CallMethod(object instance, String methodName, IDictionary<string, object> parameters, IGxContext context=null)

public static Dictionary<string, object> CallMethod(object instance, String methodName, IDictionary<string, object> parameters, IGxContext context = null)
{
MethodInfo methodInfo = instance.GetType().GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public | BindingFlags.IgnoreCase);
return CallMethodImpl(instance, methodInfo, parameters, context);
Expand Down Expand Up @@ -80,17 +81,26 @@ public static Dictionary<string, object> GetWrappedParameter(object instance, St
inputParameters.Add(methodParameter);
}
}
if (inputParameters.Count == 1 && bodyParameters.Count>1)
if (inputParameters.Count == 1)
{
ParameterInfo pInfo = inputParameters[0];
if (pInfo.ParameterType.IsSubclassOf(typeof(GxUserType)))
ParameterInfo pInfo = inputParameters[0];
if (pInfo.ParameterType.IsSubclassOf(typeof(GxUserType)) && bodyParameters.Count > 1)
{
var gxParameterName = GxParameterName(pInfo.Name).ToLower();
Dictionary<string, object> parameters = new Dictionary<string,object>();
JObject jparms = new JObject(bodyParameters);
string gxParameterName = GxParameterName(pInfo.Name).ToLower();
Dictionary<string, object> parameters = new Dictionary<string, object>();
JObject jparms = new JObject(bodyParameters);
parameters.Add(gxParameterName, jparms);
return parameters;
return parameters;

}
if (typeof(IGxCollection).IsAssignableFrom(pInfo.ParameterType) && bodyParameters.Count == 1 && bodyParameters.ContainsKey(string.Empty) && bodyParameters[string.Empty] is JArray)
{
string gxParameterName = GxParameterName(pInfo.Name).ToLower();
Dictionary<string, object> parameters = new Dictionary<string, object>();
parameters.Add(gxParameterName, bodyParameters[string.Empty]);
return parameters;
}

}
return bodyParameters;
}
Expand Down