Ejemplo n.º 1
0
        /// <summary>
        /// 停止依赖该服务的其它服务。
        /// </summary>
        /// <param name="service">主服务。</param>
        internal void StopDependencies(IService service)
        {
            if (!_isInit)
            {
                throw new InvalidOperationException("Need initialize");
            }
            AddinDescriptor descriptor = AddinDescriptor.FindAddinDescriptor(service);

            if (descriptor == null)
            {
                throw new InvalidOperationException("This service is out of control");
            }
            Collection <AddinDescriptor> children = AddinDescriptor.GetDependencies(descriptor.Owner.FullPath);

            if (children == null)
            {
                return;
            }
            AddinDescriptor temp = null;
            IService        s    = null;

            for (Int32 i = 0; i < children.Count; i++)
            {
                temp = children[i];
                if (temp.BuildState != AddinBuildState.Build)
                {
                    continue;
                }
                s = temp.Addin as IService;
                if (s != null && s.State == AddinState.IncludeOrRuning)
                {
                    s.Stop();
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 通知插件数据已经改变。
        /// </summary>
        /// <param name="addin">状态改变的插件。</param>
        /// <param name="name">数据名称。</param>
        /// <param name="newData">新数据。</param>
        /// <param name="oldData">旧数据。</param>
        internal void NotifyDataChanged(IAddin addin, String name, Object newData, Object oldData)
        {
            if (!_isInit)
            {
                throw new InvalidOperationException("Need initialize");
            }
            AddinDescriptor descriptor = AddinDescriptor.FindAddinDescriptor(addin);
            String          fullPath   = descriptor.Owner.FullPath;
            Collection <AddinDescriptor> descriptors = AddinDescriptor.GetDependencies(fullPath);

            if (descriptors == null || descriptors.Count == 0)
            {
                return;
            }
            for (Int32 i = 0; i < descriptors.Count; i++)
            {
                if (descriptors[i].BuildState == AddinBuildState.Build)
                {
                    descriptors[i].Addin.OnDataChanged(fullPath, name, newData, oldData);
                }
            }
        }