public virtual void TestInterFaceItem()
 {
     var interfaceItem = new InterfaceItem
         ();
     interfaceItem.list = new ArrayList();
     Store(interfaceItem);
     Db4oAssert.PersistedCount(1, typeof (ArrayList));
 }
        public virtual void TestInterFaceItem()
        {
            var interfaceItem = new InterfaceItem
                                    ();

            interfaceItem.list = new ArrayList();
            Store(interfaceItem);
            Db4oAssert.PersistedCount(1, typeof(ArrayList));
        }
 public InterfaceConfig()
 {
     Internal = new InterfaceItem()
     {
         //InterfaceType = InterfaceType.Internal,
     };
     External = new InterfaceItem()
     {
         //InterfaceType = InterfaceType.External,
     };
 }
        private void FunctionItemInit(string name, string returnType, bool isStatic, List <ParameterItem> par, InterfaceItem interfaceItem, EA.Method method)
        {
            _name          = name;
            _parameterList = par;
            _returnType    = returnType;
            _isStatic      = isStatic;

            _interface = interfaceItem;
            _module    = null;
            _op        = method;
        }
예제 #5
0
        public static T Wrap <T>(Type interfacetype) where T : class
        {
            Assembly assembly = interfacetype.Assembly;
            Module   module   = interfacetype.Module;

            AssemblyName assemblyName = new AssemblyName(assembly.FullName);

            assemblyName.Name = assemblyName.Name + "$001";

            AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);
            ModuleBuilder   moduleBuilder   = assemblyBuilder.DefineDynamicModule(module.Name);

            // Console.WriteLine ("11111111");
            // Console.WriteLine ("11111111");
            // Console.WriteLine ("11111111");
            // Console.WriteLine (interfacetype.FullName + "$1");
            // Console.WriteLine (interfacetype.Namespace+"."+interfacetype.Name + "$1");
            // Console.WriteLine ("11111111");
            // Console.WriteLine ("11111111");
            // Console.WriteLine ("11111111");

            TypeBuilder typeBuilder = moduleBuilder.DefineType(interfacetype.Namespace + "." + interfacetype.Name + "$1"
                                                               , TypeAttributes.Class | TypeAttributes.Public, typeof(WrapBase), new Type[] { interfacetype });

            ConstructorBuilder constructorBuilder = typeBuilder.DefineDefaultConstructor(MethodAttributes.Public);

            //constructorBuilder.GetILGenerator().Emit(OpCodes.Ret);

            constructorBuilder = typeBuilder.DefineConstructor(MethodAttributes.Public, CallingConventions.Standard, Type.EmptyTypes);
            ILGenerator ctor0IL = constructorBuilder.GetILGenerator();

            ctor0IL.Emit(OpCodes.Ret);

            MethodInfo[] interfacemethods = interfacetype.GetMethods();
            MethodInfo   interfacemethodInfo;

            InterfaceWrapContext interfaceWrapContext = InterfaceWrapContext.GetContext(interfacetype);

            for (int i = 0; i < interfacemethods.Length; i++)
            {
                interfacemethodInfo = interfacemethods[i];
                MethodFactory.GenerateMethod(interfacetype, interfacemethodInfo, typeBuilder);
            }

            Type newtype = typeBuilder.CreateType();

            T             t             = (T)Activator.CreateInstance(newtype);
            InterfaceItem interfaceItem = new InterfaceItem(t, interfacetype, interfaceWrapContext);

            Lark.Core.Lark.InterfaceWrapCache[interfacetype] = interfaceItem;

            return(t);
        }
        /// <summary>
        /// 新增、修改外部接口
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public Task <ResponseModel> EditInterfaceItem(InterfaceItem model)
        {
            //1. 获取当前最新的接口全路径
            var path = Logic.GetCurrInterfacePath(model.catgory_id, model.code);

            model.path = path;
            //2. 判断是否重复编码【相同分组】
            var exist = Logic.ExistInterfaceCode(model.id, model.catgory_id, model.code);

            if (exist)
            {
                return(Task.FromResult(new ResponseModel(ResponseCode.Error, "接口编码重复")));
            }
            return(Logic.EditInterfaceItem(model) ?
                   Task.FromResult(new ResponseModel(ResponseCode.Success, "操作成功"))
                  : Task.FromResult(new ResponseModel(ResponseCode.Error, "操作失败")));
        }
 /// <summary>
 /// 新增、修改外部接口
 /// </summary>
 /// <param name="model"></param>
 /// <returns></returns>
 public bool EditInterfaceItem(InterfaceItem model)
 {
     try
     {
         using (var db = new DbContext())
         {
             if (string.IsNullOrEmpty(model.id))
             {
                 return(db.Insert(model).Execute() > 0);
             }
             return(db.Update(model).Execute() > 0);
         }
     }
     catch (Exception ex)
     {
         Logger.Instance.Error("编辑外部接口时发生异常:", ex);
         return(false);
     }
 }
예제 #8
0
        public static object Invoke(Type interfacetype, WrapBase wrapBase, MethodInfo methodInfo, List <Object> args)
        {
            // if (InternalConfig.EmitTestCode)
            // {
            //     Console.WriteLine("InvokeProxy args:");
            //     args.ForEach(x=>{
            //         Console.WriteLine((x??new object()).ToString());
            //     });
            // }

            try
            {
                if (false == Lark.InterfaceWrapCache.ContainsKey(interfacetype))
                {
                    throw new LarkException("RuntimeException:wrapcache is not exists!");
                }
                InterfaceItem interfaceItem = Lark.InterfaceWrapCache[interfacetype];

                if (false == interfaceItem.WrapContext.MethodCache.ContainsKey(methodInfo))
                {
                    throw new LarkException("RuntimeException:MethodCache is not exists!");
                }

                MethodItem methodItem = interfaceItem.WrapContext.MethodCache[methodInfo];

                //todo need a pool of RequestCreContext
                RequestCreContext requestCreContext = RequestCreContext.Create(interfaceItem.WrapContext, methodItem.WrapContext, wrapBase);
                requestCreContext.ParameterValues.Value = args;

                return(HttpCreater.Create(requestCreContext).DealResponse(methodInfo.ReturnType));
            }
            catch (System.Exception ex)
            {
                System.Console.WriteLine(ex.ToString());
                throw ex;
            }
        }
        //
        public bool InventoryDesignInterfaces()
        {
            // Get all interfaces
            // 'object_id' has to be included in select
            string sql = $@"select object_id, name
            from t_object 
            where object_type = 'Interface' AND
            package_id in ( { _designPackagedIds} )
            order by 2";

            EA.Collection interfaceList = Rep.GetElementSet(sql, 2);
            foreach (EA.Element el in interfaceList)
            {
                InterfaceItem ifItem = (InterfaceItem)_designFiles.Add($"{el.Name}.h");
                ifItem.El = el;

                foreach (EA.Method m in el.Methods)
                {
                    // create function
                    FunctionItem functionItem = new FunctionItem(m.Name, m.ReturnType, m.IsStatic, new List <ParameterItem>(), ifItem, m);
                    if (_designFunctions.FunctionList.ContainsKey(m.Name))
                    {
                        var function = _designFunctions.FunctionList[m.Name];
                        MessageBox.Show($"Interface:\t{function.Interface?.Name}\r\nModule:\t{function.Module?.Name}",
                                        $"Duplicated Function {m.Name}, skipped!");
                    }
                    else
                    {
                        _designFunctions.FunctionList.Add(m.Name, functionItem);
                    }

                    // update interface
                    ifItem.ProvidedFunctions.Add(functionItem);
                }
            }

            // Show deleted Interface
            var deletedInterfaces = from s in _designFiles.FileList
                                    where !_files.FileList.Any(t => (s.Value.Name == t.Value.Name) &&
                                                               t.Value.GetType().Name.Equals(typeof(InterfaceItem).Name))
                                    select s.Value.El;

            var createdInterfaces = from s in _files.FileList
                                    where !_designFiles.FileList.All(t => (s.Value.Name == t.Value.Name) &&
                                                                     t.Value.GetType().Name.Equals(typeof(InterfaceItem).Name))
                                    select s.Value.El;

            _deletedInterfaces = 0;
            string deleteMe = "DeleteMe";

            foreach (var el in deletedInterfaces)
            {
                if (!el.Name.EndsWith(deleteMe))
                {
                    el.Name = el.Name + deleteMe;
                    el.Update();
                }
                _deletedInterfaces++;
            }
            _createdInterfaces = createdInterfaces.Count();

            return(true);
        }
 public FunctionItem(string name, string returnType, bool isStatic, List <ParameterItem> par, InterfaceItem interfaceItem, EA.Method method)
 {
     FunctionItemInit(name, returnType, isStatic, par, interfaceItem, method);
 }