コード例 #1
0
        public object ВыполнитьМетод(object objOrig, string имяМетода, params object[] argsOrig)
        {
            object res;
            object obj = objOrig;

            object[] args = AutoWrap.ПолучитьМассивРеальныхОбъектов(argsOrig);
            if (obj is AutoWrap Объект)
            {
                obj = Объект.O;

                if (Объект.ЭтоТип)
                {
                    res = AutoWrap.ОбернутьОбъект(Объект.T.InvokeMember(имяМетода, BindingFlags.DeclaredOnly |
                                                                        BindingFlags.Public | BindingFlags.NonPublic |
                                                                        BindingFlags.Static | BindingFlags.InvokeMethod, null, null, args));

                    AutoWrap.УстановитьИзмененияВМассиве(argsOrig, args);

                    return(res);
                }
            }

            Type T = obj.GetType();

            res = AutoWrap.ОбернутьОбъект(T.InvokeMember(имяМетода, BindingFlags.DeclaredOnly |
                                                         BindingFlags.Public | BindingFlags.NonPublic |
                                                         BindingFlags.Instance | BindingFlags.InvokeMethod, null, obj, args));

            AutoWrap.УстановитьИзмененияВМассиве(argsOrig, args);
            return(res);
        }