Dynamitey.Invocation.Invoke C# (CSharp) Method

Invoke() public method

Invokes the invocation on specified target with specific args.
public Invoke ( object target ) : object
target object The target.
return object
        public virtual object Invoke(object target, params object[] args)
        {
            switch (Kind)
            {
                case InvocationKind.Constructor:
                    return Dynamic.InvokeConstructor((Type)target, args);
                case InvocationKind.Convert:
                    bool tExplict = false;
                    if (Args.Length == 2)
                        tExplict = (bool)args[1];
                    return Dynamic.InvokeConvert(target, (Type)args[0], tExplict);
                case InvocationKind.Get:
                    return Dynamic.InvokeGet(target, Name.Name);
                case InvocationKind.Set:
                    Dynamic.InvokeSet(target, Name.Name, args.FirstOrDefault());
                    return null;
                case InvocationKind.GetIndex:
                    return Dynamic.InvokeGetIndex(target, args);
                case InvocationKind.SetIndex:
                    Dynamic.InvokeSetIndex(target, args);
                    return null;
                case InvocationKind.InvokeMember:
                    return Dynamic.InvokeMember(target, Name, args);
                case InvocationKind.InvokeMemberAction:
                    Dynamic.InvokeMemberAction(target, Name, args);
                    return null;
                case InvocationKind.InvokeMemberUnknown:
                    {
                        try
                        {
                            return Dynamic.InvokeMember(target, Name, args);
                        }
                        catch (RuntimeBinderException)
                        {

                            Dynamic.InvokeMemberAction(target, Name, args);
                            return null;
                        }
                    }
                case InvocationKind.Invoke:
                    return Dynamic.Invoke(target, args);
                case InvocationKind.InvokeAction:
                    Dynamic.InvokeAction(target, args);
                    return null;
                case InvocationKind.InvokeUnknown:
                    {
                        try
                        {
                            return Dynamic.Invoke(target, args);
                        }
                        catch (RuntimeBinderException)
                        {

                            Dynamic.InvokeAction(target, args);
                            return null;
                        }
                    }
                case InvocationKind.AddAssign:
                    Dynamic.InvokeAddAssignMember(target, Name.Name, args.FirstOrDefault());
                    return null;
                case InvocationKind.SubtractAssign:
                    Dynamic.InvokeSubtractAssignMember(target, Name.Name, args.FirstOrDefault());
                    return null;
                case InvocationKind.IsEvent:
                    return Dynamic.InvokeIsEvent(target, Name.Name);
                default:
                    throw new InvalidOperationException("Unknown Invocation Kind: " + Kind);
            }
        }