This commit is contained in:
grzegorz.russek
2014-11-28 18:58:27 +00:00
parent 10a22759eb
commit 386059712f
4 changed files with 340 additions and 81 deletions

View File

@@ -67,9 +67,7 @@ namespace DynamORM.Helpers.Dynamics
k => k.Value.Name,
v => v.Value);
_methods = mapper.MethodsMap;
/*GetAllMembers(_type)
_methods = GetAllMembers(_type)
.Where(x => x is MethodInfo)
.Cast<MethodInfo>()
.Where(m => !((m.Name.StartsWith("set_") && m.ReturnType == typeof(void)) || m.Name.StartsWith("get_")))
@@ -86,7 +84,7 @@ namespace DynamORM.Helpers.Dynamics
{
return null;
}
});*/
});
}
/// <summary>Provides implementation for type conversion operations.
@@ -238,7 +236,7 @@ namespace DynamORM.Helpers.Dynamics
if (d != null)
{
result = d.DynamicInvoke(CompleteArguments(mi.GetParameters().ToArray(), args).ToArray());
result = d.DynamicInvoke(CompleteArguments(mi.GetParameters().ToArray(), args));
if (d.Method.ReturnType == _type && result is T)
result = new DynamicProxy<T>((T)result);
@@ -247,7 +245,7 @@ namespace DynamORM.Helpers.Dynamics
}
else if (mi != null)
{
result = mi.Invoke(_proxy, CompleteArguments(mi.GetParameters().ToArray(), args).Skip(1).ToArray());
result = mi.Invoke(_proxy, CompleteArguments(mi.GetParameters().ToArray(), args));
if (mi.ReturnType == _type && result is T)
result = new DynamicProxy<T>((T)result);
@@ -270,9 +268,9 @@ namespace DynamORM.Helpers.Dynamics
return true;
}
private IEnumerable<object> CompleteArguments(ParameterInfo[] parameters, object[] arguments)
private object[] CompleteArguments(ParameterInfo[] parameters, object[] arguments)
{
return new object[] { _proxy }.Union(arguments.Concat(parameters.Skip(arguments.Length).Select(p => p.DefaultValue)));
return arguments.Concat(parameters.Skip(arguments.Length).Select(p => p.DefaultValue)).ToArray();
}
private IEnumerable<MemberInfo> GetAllMembers(Type type)