/// <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; }
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(); } }
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); } }
/// <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); }