コード例 #1
0
        /// <summary>
        /// 获取当前外壳描述符。
        /// </summary>
        /// <returns>外壳描述符。</returns>
        public ShellDescriptor GetShellDescriptor()
        {
            //得到当前租户的外壳描述符。
            var descriptor = GetCurrentShellDescriptor();

            //如果之前的记录与最新的功能描述符相等直接返回。
            if (descriptor != null)
                return (ShellDescriptor)descriptor;
            /*//如果之前的记录与最新的功能描述符相等直接返回。
            if (descriptor != null && features.SequenceEqual(descriptor.Features.Select(i => i.Name)))
                return (ShellDescriptor)descriptor;

            //删除之前的描述符。
            if (descriptor != null)
                DeleteShellDescriptor(descriptor, false);*/

            //得到最新的功能描述符名称集合。
            var features = GetFeatures();
            //添加一个新的描述符。
            descriptor = new ShellDescriptorEntry
            {
                ShellName = _settings.Name,
                Features = features.Select(i => new ShellFeature { Name = i }).Distinct(new ShellFeatureEqualityComparer()).ToArray(),
                SerialNumber = GetSerialNumber()
            };

            List.Add(descriptor);
            List.Save();

            return (ShellDescriptor)descriptor;
        }
コード例 #2
0
        private void DeleteShellDescriptor(ShellDescriptorEntry descriptor, bool isSave = true)
        {
            if (descriptor == null)
            {
                throw new InvalidOperationException(T("找不到租户 '{0}' 的外壳描述符。", _settings.Name).ToString());
            }

            var model = List.FirstOrDefault(
                i => string.Equals(i.ShellName, descriptor.ShellName, StringComparison.OrdinalIgnoreCase));

            if (model == null)
            {
                return;
            }
            List.Remove(model);
            if (isSave)
            {
                List.Save();
            }
        }
コード例 #3
0
        private void UpdateShellDescriptor(ShellDescriptorEntry descriptor, IEnumerable <ShellFeature> enabledFeatures)
        {
            if (descriptor == null)
            {
                throw new InvalidOperationException(T("找不到租户 '{0}' 的外壳描述符。", _settings.Name).ToString());
            }

            if (enabledFeatures != null)
            {
                descriptor.Features = enabledFeatures.ToArray();
            }
            else
            {
                DeleteShellDescriptor(descriptor, false);
            }

            List.Save();

            foreach (var handler in _events)
            {
                handler.Changed((ShellDescriptor)descriptor, _settings.Name);
            }
        }
コード例 #4
0
        /// <summary>
        /// 获取当前外壳描述符。
        /// </summary>
        /// <returns>外壳描述符。</returns>
        public ShellDescriptor GetShellDescriptor()
        {
            //得到当前租户的外壳描述符。
            var descriptor = GetCurrentShellDescriptor();

            //如果之前的记录与最新的功能描述符相等直接返回。
            if (descriptor != null)
            {
                return((ShellDescriptor)descriptor);
            }

            /*//如果之前的记录与最新的功能描述符相等直接返回。
             * if (descriptor != null && features.SequenceEqual(descriptor.Features.Select(i => i.Name)))
             *  return (ShellDescriptor)descriptor;
             *
             * //删除之前的描述符。
             * if (descriptor != null)
             *  DeleteShellDescriptor(descriptor, false);*/

            //得到最新的功能描述符名称集合。
            var features = GetFeatures();

            //添加一个新的描述符。
            descriptor = new ShellDescriptorEntry
            {
                ShellName = _settings.Name,
                Features  = features.Select(i => new ShellFeature {
                    Name = i
                }).Distinct(new ShellFeatureEqualityComparer()).ToArray(),
                SerialNumber = GetSerialNumber()
            };

            List.Add(descriptor);
            List.Save();

            return((ShellDescriptor)descriptor);
        }