CQRSlite.Infrastructure.PrivateReflectionDynamicObject.InvokeMemberOnType C# (CSharp) Method

InvokeMemberOnType() private static method

private static InvokeMemberOnType ( Type type, object target, string name, object args ) : object
type System.Type
target object
name string
args object
return object
        private static object InvokeMemberOnType(Type type, object target, string name, object[] args)
        {
            var argtypes = new Type[args.Length];
            for (var i = 0; i < args.Length; i++)
            {
                argtypes[i] = args[i].GetType();
            }
            while (true)
            {
                //TODO: change when .net core implements GetMethod correct to get access to private methods
                var member = type.GetMethods(bindingFlags).FirstOrDefault(m => m.Name == name && m.GetParameters().Select(p => p.ParameterType).SequenceEqual(argtypes));
                //var member = type.GetMethod(name, bindingFlags, argtypes);

                if (member != null)
                {
                    return member.Invoke(target, args);
                }
                if (type.GetTypeInfo().BaseType == null)
                {
                    return null;
                }
                type = type.GetTypeInfo().BaseType;
            }
        }