Esempio n. 1
0
        /// <summary>
        /// 取消注册公开的服务对象
        /// </summary>
        /// <param name="serviceReference">服务引用</param>
        public void UnRegisterService(IServiceReference serviceReference)
        {
            FireServiceEvent(new ServiceEventArgs(ServiceEventArgs.UNREGISTERING, serviceReference.GetSercieContracts(), serviceReference));

            foreach (string contract in serviceReferenceDictionary.Keys)
            {
                IList <IServiceReference> serviceReferenceList = serviceReferenceDictionary[contract];
                if (serviceReferenceList.Contains(serviceReference))
                {
                    serviceReferenceList.Remove(serviceReference);
                }
            }
            if (usingServiceBundleDict.ContainsKey(serviceReference))
            {
                usingServiceBundleDict.Remove(serviceReference);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 取消注册公开的服务对象
        /// </summary>
        /// <param name="serviceReference">服务引用</param>
        public void UnRegisterService(IServiceReference serviceReference)
        {
            if (!serviceReferenceList.Contains(serviceReference))
            {
                return;
            }

            //触发服变更事件
            foreach (var bundleObj in this.framework.GetBundles())
            {
                var fireContext = (IContextFireEvent)bundleObj.GetBundleContext();
                fireContext.FireServiceChanged(this.bundle, new ServiceEventArgs(ServiceEventArgs.UNREGISTERING, serviceReference.GetSercieContracts(), serviceReference));
            }

            ((IFrameworkService)framework).UnRegisterService(serviceReference);

            serviceReferenceList.Remove(serviceReference);
        }