Ejemplo n.º 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);
        }
Ejemplo n.º 2
0
        public object MethodInfo_Invoke(object методИнфо, object объект, params object[] argsOrig)
        {
            object[] args = AutoWrap.ПолучитьМассивРеальныхОбъектов(argsOrig);
            var      mf   = (MethodInfo)(((AutoWrap)методИнфо).O);

            return(AutoWrap.ОбернутьОбъект(mf.Invoke(ПолучитьРеальныйОбъект(объект), args)));
        }
Ejemplo n.º 3
0
        public object Or(params object[] параметры1)
        {
            if (параметры1.Length == 0)
            {
                return(null);
            }

            object[] параметры = AutoWrap.ПолучитьМассивРеальныхОбъектов(параметры1);
            var      парам     = параметры[0];
            var      тип       = парам.GetType();

            long res = (long)Convert.ChangeType(парам, typeof(long));

            for (int i = 1; i < параметры.Length; i++)
            {
                res |= (long)Convert.ChangeType(параметры[i], typeof(long));
            }


            if (тип.IsEnum)
            {
                var ТипЗначений = Enum.GetUnderlyingType(тип);
                var number      = Convert.ChangeType(res, ТипЗначений);
                return(AutoWrap.ОбернутьОбъект(Enum.ToObject(тип, number)));
            }

            return(AutoWrap.ОбернутьОбъект(Convert.ChangeType(res, тип)));
        }
Ejemplo n.º 4
0
        public object СоздатьОбъект(object тип, params object[] argOrig)
        {
            var res = ТипДляСоздатьОбъект(тип);

            object[] args = AutoWrap.ПолучитьМассивРеальныхОбъектов(argOrig);
            return(AutoWrap.ОбернутьОбъект(System.Activator.CreateInstance(res, args)));
        }
Ejemplo n.º 5
0
        public object СоздатьКлиентаWcfConfigFile(string имяФайла, object channel, string endpointConfigurationName, object endpointAddress = null, string userName = null, string password = null)
        {
            ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap {
                ExeConfigFilename = имяФайла
            };
            Configuration newConfiguration = ConfigurationManager.OpenMappedExeConfiguration(
                fileMap,
                ConfigurationUserLevel.None);

            Type ТипКанала   = ТипДляСоздатьОбъект(channel);
            Type type        = typeof(ConfigurationChannelFactory <>);
            Type constructed = type.MakeGenericType(ТипКанала);

            dynamic factory1 = System.Activator.CreateInstance(constructed,
                                                               endpointConfigurationName,
                                                               newConfiguration,
                                                               AutoWrap.ПолучитьРеальныйОбъект(endpointAddress)
                                                               );

            if (!String.IsNullOrWhiteSpace(userName))
            {
                factory1.Credentials.UserName.UserName = userName;
                factory1.Credentials.UserName.Password = password;
            }

            return(AutoWrap.ОбернутьОбъект(factory1.CreateChannel()));
        }
Ejemplo n.º 6
0
        // Получаем масив элементов определенного типа
        // Тип выводится по первому элементу с индексом 0
        // Пример использования
        // ТипыПараметров=ъ(Врап.ТипМассив(IParentNode.ПолучитьСсылку(),String.ПолучитьСсылку()));
        public object ТипМассив(params object[] argOrig)
        {
            if (!(argOrig != null && argOrig.Length > 0))
            {
                return(new object[0]);
            }

            argOrig = AutoWrap.ПолучитьМассивРеальныхОбъектов(argOrig);
            var Тип     = argOrig[0].GetType();
            var ti      = Тип.GetTypeInfo();
            var TypeRes = typeof(List <>).MakeGenericType(Тип);

            var res = System.Activator.CreateInstance(TypeRes);
            var mi  = TypeRes.GetTypeInfo().GetMethod("Add");
            var mi2 = TypeRes.GetTypeInfo().GetMethod("ToArray");

            foreach (var str in argOrig)
            {
                if (mi != null && str != null && ti.IsInstanceOfType(str))
                {
                    mi.Invoke(res, new[] { str });
                }
            }

            if (mi2 != null)
            {
                return(AutoWrap.ОбернутьОбъект(mi2.Invoke(res, new object[0])));
            }
            else
            {
                return(null);
            }
        }
 public void Оповестить(object задача, object данныеКЗадаче)
 {
     if (_sc != null && задача != null && данныеКЗадаче != null)
     {
         _sc.Post(d => ПриОкончанииВыполненияЗадачи(AutoWrap.ОбернутьОбъект(задача), данныеКЗадаче), null);
     }
 }
Ejemplo n.º 8
0
 private void ВнешнееСобытиеСПараметром(object value)
 {
     if (СобытиеСПараметром != null && _sc != null && value != null)
     {
         _sc.Send(d => СобытиеСПараметром(AutoWrap.ОбернутьОбъект(value)), null);
     }
 }
Ejemplo n.º 9
0
        public object СоздатьОберткуДляСобытий77(object объект, object глобальныйКонтекст)
        {
            object еальныйОбъект = AutoWrap.ПолучитьРеальныйОбъект(объект);
            var    функция       = ПолучитьMethodInfoОберткиСобытий("СоздательОбертки77", еальныйОбъект);
            object обертка       = функция.Invoke(null, new[] { глобальныйКонтекст, еальныйОбъект });

            return(AutoWrap.ОбернутьОбъект(обертка));
        }
Ejemplo n.º 10
0
        public object ВыполнитьДелегат(object делегат, params object[] argsOrig)
        {
            Delegate obj = (Delegate)ПолучитьРеальныйОбъект(делегат);

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

            return(AutoWrap.ОбернутьОбъект(obj.DynamicInvoke(args)));
        }
Ejemplo n.º 11
0
        public object ОбернутьОбъект(object объект)
        {
            if (объект is AutoWrap)
            {
                return(объект);
            }

            return(AutoWrap.ОбернутьОбъект(объект));
        }
Ejemplo n.º 12
0
        public object[] МассивИзЭнумератора2(object счетчик)
        {
            var cur = (IEnumerable)AutoWrap.ПолучитьРеальныйОбъект(счетчик);

            var list = new List <object>();

            foreach (var str in cur)
            {
                list.Add(AutoWrap.ОбернутьОбъект(str));
            }
            return(list.ToArray());
        }
Ejemplo n.º 13
0
        public bool Следующий(object перечислитель, out object current)
        {
            var enumerator = (IEnumerator)AutoWrap.ПолучитьРеальныйОбъект(перечислитель);

            if (enumerator.MoveNext())
            {
                current = AutoWrap.ОбернутьОбъект(enumerator.Current);
                return(true);
            }

            current = null;
            return(false);
        }
Ejemplo n.º 14
0
        public Object ПолучитьSafeArrayИзЭнумератора(Object массив)
        {
            List <object> res = new List <object>();

            var Enumerable = ((IEnumerable)(AutoWrap.ПолучитьРеальныйОбъект(массив))).GetEnumerator();

            while (Enumerable.MoveNext())
            {
                res.Add(AutoWrap.ОбернутьОбъект(Enumerable.Current));
            }

            return(res.ToArray());
        }
Ejemplo n.º 15
0
        public object GetValueFromArray(object массивOrig, Object индекс)
        {
            object Массив = массивOrig;

            if (Массив is AutoWrap)
            {
                Массив = ((AutoWrap)Массив).O;
            }

            int ind = Convert.ToInt32(индекс);

            Array Масс = (Array)Массив;

            return(AutoWrap.ОбернутьОбъект(Масс.GetValue(ind)));
        }
Ejemplo n.º 16
0
        public object ПолучитьМассивТипов()
        {
            var list = new List <object>
            {
                "System.String",
                AutoWrap.ОбернутьОбъект(DateTime.Now),
                AutoWrap.ОбернутьОбъект(true),
                AutoWrap.ОбернутьОбъект((Byte)45),
                AutoWrap.ОбернутьОбъект((Decimal)48.789),
                AutoWrap.ОбернутьОбъект(51.51),
                AutoWrap.ОбернутьОбъект((Single)11.11),
                AutoWrap.ОбернутьОбъект(11),
                AutoWrap.ОбернутьОбъект(789988778899),
                AutoWrap.ОбернутьОбъект((SByte)45),
                AutoWrap.ОбернутьОбъект((Int16)66),
                AutoWrap.ОбернутьОбъект((UInt32)77),
                AutoWrap.ОбернутьОбъект((UInt64)88888888888888),
                AutoWrap.ОбернутьОбъект((UInt16)102)
            };

            return(new AutoWrap(list));
        }
Ejemplo n.º 17
0
 // Получаем массив объектов используя эффект получения массива параметров при использовании
 // ключевого слова params
 // Пример использования
 //МассивПараметров=ъ(Врап.Массив(doc.ПолучитьСсылку(), "a[title='The Big Bang Theory']"));
 public object Массив(params object[] argOrig)
 {
     argOrig = AutoWrap.ПолучитьМассивРеальныхОбъектов(argOrig);
     return(AutoWrap.ОбернутьОбъект(argOrig));
 }
Ejemplo n.º 18
0
 public object ОбновитьДанныеОметодахИСвойствах(object objOrig)
 {
     return(AutoWrap.ОбернутьОбъект(AutoWrap.ПолучитьРеальныйОбъект(objOrig)));
 }
Ejemplo n.º 19
0
        public object CreateObject(object type)
        {
            var res = ТипДляСоздатьОбъект(type);

            return(AutoWrap.ОбернутьОбъект(System.Activator.CreateInstance(res)));
        }
Ejemplo n.º 20
0
 public object CreateArray(object type, int length)
 {
     return(AutoWrap.ОбернутьОбъект(Array.CreateInstance(ТипДляСоздатьОбъект(type), length)));
 }
Ejemplo n.º 21
0
        public object ЗагрузитьСборку(string путьКСборке)
        {
            var res = Assembly.LoadFrom(путьКСборке);

            return(AutoWrap.ОбернутьОбъект(res));
        }