Esempio n. 1
0
        /// <summary>
        ///     load service
        /// </summary>
        /// <returns></returns>
        public virtual void LoadServices(List <Assembly> assemblies)
        {
            var jimuServicesType = GetJimuService(assemblies);
            var container        = RegisterToIOC(jimuServicesType, assemblies);
            JimuServiceDescParser  descParser  = new JimuServiceDescParser();
            JimuServiceEntryParser entryParser = new JimuServiceEntryParser(container);
            var tmpServices = new List <JimuServiceEntry>();

            foreach (var type in jimuServicesType)
            {
                // the type catch from Interface.dll will not register sccessful, so we just filter the success one
                if (container.IsRegistered(type))
                {
                    foreach (var methodInfo in GetMethodInfos(type))
                    {
                        JimuServiceDesc desc    = descParser.Parse(methodInfo);
                        var             service = entryParser.Parse(methodInfo, desc);
                        tmpServices.Add(service);
                    }
                }
            }
            _services.Clear();
            _services.AddRange(tmpServices);

            OnServiceLoaded?.Invoke(_services);
        }
 internal static void RunServiceLoaded(PointBlankService service) => OnServiceLoaded?.Invoke(service);