public NotFoundExtensionInfo(string extensionId) { _featureInfos = Enumerable.Empty <IFeatureInfo>(); _extensionId = extensionId; _fileInfo = new NotFoundFileInfo(extensionId); _manifestInfo = new NotFoundManifestInfo(extensionId); }
public InternalExtensionInfo(string subPath) { _subPath = subPath; _fileInfo = new NotFoundFileInfo(subPath); _manifestInfo = new NotFoundManifestInfo(subPath); _features = Enumerable.Empty <IFeatureInfo>(); }
public ExtensionInfo(string subPath, IManifestInfo manifestInfo, Func <IManifestInfo, IExtensionInfo, IEnumerable <IFeatureInfo> > features) { base(); this.u003cSubPathu003ek__BackingField = subPath; this.u003cManifestu003ek__BackingField = manifestInfo; this.u003cFeaturesu003ek__BackingField = features.Invoke(manifestInfo, this); return; }
public InternalExtensionInfo(string subPath) { _fileInfo = new NotFoundFileInfo(subPath); _subPath = subPath; _manifestInfo = new NotFoundManifestInfo(subPath); _features = new EmptyFeatureInfoList(); }
public ExtensionInfo( string subPath, IManifestInfo manifestInfo, Func <IManifestInfo, IExtensionInfo, IEnumerable <IFeatureInfo> > features) { SubPath = subPath; Manifest = manifestInfo; Features = features(manifestInfo, this); }
public ExtensionInfo( IFileInfo fileInfo, string subPath, IManifestInfo manifestInfo, Func <IExtensionInfo, IFeatureInfoList> features) { _fileInfo = fileInfo; _subPath = subPath; _manifestInfo = manifestInfo; _features = features(this); }
public IExtensionInfo GetExtensionInfo(IManifestInfo manifestInfo, string subPath) { foreach (var provider in _extensionProviders.OrderBy(ep => ep.Order)) { var extensionInfo = provider.GetExtensionInfo(manifestInfo, subPath); if (extensionInfo != null) { return(extensionInfo); } } return(new NotFoundExtensionInfo(subPath)); }
public IEnumerable <IFeatureInfo> GetFeatures(IPluginInfo pluginInfo, IManifestInfo manifestInfo) { List <IFeatureInfo> featureInfos = new List <IFeatureInfo>(); foreach (var provider in _featuresProviders) { featureInfos.AddRange(provider.GetFeatures(pluginInfo, manifestInfo)); } return(featureInfos); }
public ExtensionInfo( string id, IFileInfo fileInfo, string subPath, IManifestInfo manifestInfo, Func <IManifestInfo, IExtensionInfo, IEnumerable <IFeatureInfo> > features) { _id = id; _fileInfo = fileInfo; _subPath = subPath; _manifestInfo = manifestInfo; _features = features(manifestInfo, this); }
/// <summary> /// Locate an extension at the given path by directly mapping path segments to physical directories. /// </summary> /// <param name="subpath">A path under the root directory</param> /// <returns>The extension information. null returned if extension does not exist</returns> public IExtensionInfo GetExtensionInfo(IManifestInfo manifestInfo, string subPath) { var path = System.IO.Path.GetDirectoryName(subPath); var name = System.IO.Path.GetFileName(subPath); var extension = _fileProvider .GetDirectoryContents(path) .First(content => content.Name == name); return(new ExtensionInfo(extension.Name, extension, subPath, manifestInfo, (mi, ei) => { return _featuresProvider.GetFeatures(ei, mi); })); }
private bool IsAdminTheme(IManifestInfo manifest) { return(manifest.Tags.Any(x => string.Equals(x, ManifestConstants.AdminTag, StringComparison.OrdinalIgnoreCase))); }
public IEnumerable <IFeatureInfo> GetFeatures(IExtensionInfo extensionInfo, IManifestInfo manifestInfo) { var featuresInfos = new List <IFeatureInfo>(); // Features and Dependencies live within this section var features = manifestInfo.ModuleInfo.Features.ToList(); if (features.Count > 0) { foreach (var feature in features) { if (String.IsNullOrWhiteSpace(feature.Id)) { throw new ArgumentException( $"A {nameof(feature)} is missing a mandatory '{nameof(feature.Id)}' property in the Module '{extensionInfo.Id}'"); } // Attribute properties are transparently resolved by the instances themselves for convenience var featureId = feature.Id; var featureName = feature.Name; var featureDependencyIds = feature.Dependencies; // Categorize, Prioritize, Describe, using the ModuleInfo (ModuleAttribute) as the back stop var featureCategory = feature.Categorize(manifestInfo.ModuleInfo); var featurePriority = feature.Prioritize(manifestInfo.ModuleInfo); var featureDescription = feature.Describe(manifestInfo.ModuleInfo); var featureDefaultTenantOnly = feature.DefaultTenantOnly; var featureIsAlwaysEnabled = feature.IsAlwaysEnabled; var context = new FeatureBuildingContext { FeatureId = featureId, FeatureName = featureName, Category = featureCategory, Description = featureDescription, ExtensionInfo = extensionInfo, ManifestInfo = manifestInfo, Priority = featurePriority, FeatureDependencyIds = featureDependencyIds, DefaultTenantOnly = featureDefaultTenantOnly, IsAlwaysEnabled = featureIsAlwaysEnabled }; foreach (var builder in _featureBuilderEvents) { builder.Building(context); } var featureInfo = new FeatureInfo( context.FeatureId, context.FeatureName, context.Priority, context.Category, context.Description, context.ExtensionInfo, context.FeatureDependencyIds, context.DefaultTenantOnly, context.IsAlwaysEnabled); foreach (var builder in _featureBuilderEvents) { builder.Built(featureInfo); } featuresInfos.Add(featureInfo); } } else { // The Extension has only one feature, itself, and that can have dependencies var featureId = extensionInfo.Id; var featureName = manifestInfo.Name; var featureDependencyIds = manifestInfo.ModuleInfo.Dependencies; // Ditto Categorize, Prioritize, Describe, in this case the root Module 'is' the back stop var featureCategory = manifestInfo.ModuleInfo.Categorize(); var featurePriority = manifestInfo.ModuleInfo.Prioritize(); var featureDescription = manifestInfo.ModuleInfo.Describe(); var featureDefaultTenantOnly = manifestInfo.ModuleInfo.DefaultTenantOnly; var featureIsAlwaysEnabled = manifestInfo.ModuleInfo.IsAlwaysEnabled; var context = new FeatureBuildingContext { FeatureId = featureId, FeatureName = featureName, Category = featureCategory, Description = featureDescription, ExtensionInfo = extensionInfo, ManifestInfo = manifestInfo, Priority = featurePriority, FeatureDependencyIds = featureDependencyIds, DefaultTenantOnly = featureDefaultTenantOnly, IsAlwaysEnabled = featureIsAlwaysEnabled }; foreach (var builder in _featureBuilderEvents) { builder.Building(context); } var featureInfo = new FeatureInfo( context.FeatureId, context.FeatureName, context.Priority, context.Category, context.Description, context.ExtensionInfo, context.FeatureDependencyIds, context.DefaultTenantOnly, context.IsAlwaysEnabled); foreach (var builder in _featureBuilderEvents) { builder.Built(featureInfo); } featuresInfos.Add(featureInfo); } return(featuresInfos); }
public IFeatureInfoList GetFeatures( IExtensionInfo extensionInfo, IManifestInfo manifestInfo) { var features = new List <IFeatureInfo>(); // Features and Dependencies live within this section var featuresSection = manifestInfo.ConfigurationRoot.GetSection("features"); if (featuresSection.Value != null) { foreach (var featureSection in featuresSection.GetChildren()) { var featureId = featureSection.Key; var featureDetails = featureSection.GetChildren().ToDictionary(x => x.Key, v => v.Value); var featureName = featureDetails.ContainsKey(NameKey) ? featureDetails[NameKey] : manifestInfo.Name; // TODO (ngm) look at priority var featurePriority = featureDetails.ContainsKey(PriorityKey) ? double.Parse(featureDetails[PriorityKey]) : 0D; var featureDependencyIds = featureDetails.ContainsKey(DependenciesKey) ? featureDetails[DependenciesKey] .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(e => e.Trim()) .ToArray() : new string[0]; var manifestFeatureDetails = manifestInfo .ConfigurationRoot.GetChildren().ToDictionary(x => x.Key, v => v.Value); var featureCategory = featureDetails.ContainsKey(CategoryKey) ? featureDetails[CategoryKey] : (manifestFeatureDetails.ContainsKey(CategoryKey) ? manifestFeatureDetails[CategoryKey] : null); var featureDescription = featureDetails.ContainsKey(DescriptionKey) ? featureDetails[DescriptionKey] : (manifestFeatureDetails.ContainsKey(DescriptionKey) ? manifestFeatureDetails[DescriptionKey] : null); var featureInfo = new FeatureInfo( featureId, featureName, featurePriority, featureCategory, featureDescription, extensionInfo, featureDependencyIds); features.Add(featureInfo); } } else { // The Extension has only one feature, itself, and that can have dependencies var featureId = extensionInfo.ExtensionFileInfo.Name; var featureName = manifestInfo.Name; var featureDetails = manifestInfo.ConfigurationRoot.GetChildren().ToDictionary(x => x.Key, v => v.Value); // TODO (ngm) look at priority var featurePriority = 0D; var featureDependencyIds = featureDetails.ContainsKey(DependenciesKey) ? featureDetails[DependenciesKey] .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(e => e.Trim()) .ToArray() : new string[0]; var featureCategory = featureDetails.ContainsKey(CategoryKey) ? featureDetails[CategoryKey] : null; var featureDescription = featureDetails.ContainsKey(DescriptionKey) ? featureDetails[DescriptionKey] : null; var featureInfo = new FeatureInfo( featureId, featureName, featurePriority, featureCategory, featureDescription, extensionInfo, featureDependencyIds); features.Add(featureInfo); } return(new FeatureInfoList(features)); }
public IEnumerable <IFeatureInfo> GetFeatures(IExtensionInfo extensionInfo, IManifestInfo manifestInfo) { V_0 = new List <IFeatureInfo>(); V_1 = manifestInfo.get_ModuleInfo().get_Features().ToList <FeatureAttribute>(); if (V_1.get_Count() <= 0) { V_15 = extensionInfo.get_Id(); V_16 = manifestInfo.get_Name(); stackVariable14 = manifestInfo.get_ModuleInfo().get_Dependencies(); stackVariable15 = FeaturesProvider.u003cu003ec.u003cu003e9__3_1; if (stackVariable15 == null) { dummyVar5 = stackVariable15; stackVariable15 = new Func <string, string>(FeaturesProvider.u003cu003ec.u003cu003e9.u003cGetFeaturesu003eb__3_1); FeaturesProvider.u003cu003ec.u003cu003e9__3_1 = stackVariable15; } V_17 = stackVariable14.Select <string, string>(stackVariable15).ToArray <string>(); if (!int.TryParse(manifestInfo.get_ModuleInfo().get_Priority(), out V_18)) { V_18 = 0; } V_19 = manifestInfo.get_ModuleInfo().get_Category(); V_20 = manifestInfo.get_ModuleInfo().get_Description(); V_21 = manifestInfo.get_ModuleInfo().get_DefaultTenantOnly(); V_22 = manifestInfo.get_ModuleInfo().get_IsAlwaysEnabled(); stackVariable35 = new FeatureBuildingContext(); stackVariable35.set_FeatureId(V_15); stackVariable35.set_FeatureName(V_16); stackVariable35.set_Category(V_19); stackVariable35.set_Description(V_20); stackVariable35.set_ExtensionInfo(extensionInfo); stackVariable35.set_ManifestInfo(manifestInfo); stackVariable35.set_Priority(V_18); stackVariable35.set_FeatureDependencyIds(V_17); stackVariable35.set_DefaultTenantOnly(V_21); stackVariable35.set_IsAlwaysEnabled(V_22); V_23 = stackVariable35; V_14 = this._featureBuilderEvents.GetEnumerator(); try { while (V_14.MoveNext()) { V_14.get_Current().Building(V_23); } } finally { if (V_14 != null) { V_14.Dispose(); } } V_24 = new FeatureInfo(V_23.get_FeatureId(), V_23.get_FeatureName(), V_23.get_Priority(), V_23.get_Category(), V_23.get_Description(), V_23.get_ExtensionInfo(), V_23.get_FeatureDependencyIds(), V_23.get_DefaultTenantOnly(), V_23.get_IsAlwaysEnabled()); V_14 = this._featureBuilderEvents.GetEnumerator(); try { while (V_14.MoveNext()) { V_14.get_Current().Built(V_24); } } finally { if (V_14 != null) { V_14.Dispose(); } } V_0.Add(V_24); } else { V_2 = V_1.GetEnumerator(); try { while (V_2.MoveNext()) { V_3 = V_2.get_Current(); if (string.IsNullOrWhiteSpace(V_3.get_Id())) { throw new ArgumentException(string.Concat("A feature is missing a mandatory 'Id' property in the Module '", extensionInfo.get_Id(), "'")); } V_4 = V_3.get_Id(); stackVariable99 = V_3.get_Name(); if (stackVariable99 == null) { dummyVar0 = stackVariable99; stackVariable99 = V_3.get_Id(); } V_5 = stackVariable99; stackVariable101 = V_3.get_Dependencies(); stackVariable102 = FeaturesProvider.u003cu003ec.u003cu003e9__3_0; if (stackVariable102 == null) { dummyVar1 = stackVariable102; stackVariable102 = new Func <string, string>(FeaturesProvider.u003cu003ec.u003cu003e9.u003cGetFeaturesu003eb__3_0); FeaturesProvider.u003cu003ec.u003cu003e9__3_0 = stackVariable102; } V_6 = stackVariable101.Select <string, string>(stackVariable102).ToArray <string>(); stackVariable106 = V_3.get_Priority(); if (stackVariable106 == null) { dummyVar2 = stackVariable106; stackVariable106 = manifestInfo.get_ModuleInfo().get_Priority(); } if (!int.TryParse(stackVariable106, out V_7)) { V_7 = 0; } stackVariable110 = V_3.get_Category(); if (stackVariable110 == null) { dummyVar3 = stackVariable110; stackVariable110 = manifestInfo.get_ModuleInfo().get_Category(); } V_8 = stackVariable110; stackVariable112 = V_3.get_Description(); if (stackVariable112 == null) { dummyVar4 = stackVariable112; stackVariable112 = manifestInfo.get_ModuleInfo().get_Description(); } V_9 = stackVariable112; V_10 = V_3.get_DefaultTenantOnly(); V_11 = V_3.get_IsAlwaysEnabled(); stackVariable117 = new FeatureBuildingContext(); stackVariable117.set_FeatureId(V_4); stackVariable117.set_FeatureName(V_5); stackVariable117.set_Category(V_8); stackVariable117.set_Description(V_9); stackVariable117.set_ExtensionInfo(extensionInfo); stackVariable117.set_ManifestInfo(manifestInfo); stackVariable117.set_Priority(V_7); stackVariable117.set_FeatureDependencyIds(V_6); stackVariable117.set_DefaultTenantOnly(V_10); stackVariable117.set_IsAlwaysEnabled(V_11); V_12 = stackVariable117; V_14 = this._featureBuilderEvents.GetEnumerator(); try { while (V_14.MoveNext()) { V_14.get_Current().Building(V_12); } } finally { if (V_14 != null) { V_14.Dispose(); } } V_13 = new FeatureInfo(V_4, V_5, V_7, V_8, V_9, extensionInfo, V_6, V_10, V_11); V_14 = this._featureBuilderEvents.GetEnumerator(); try { while (V_14.MoveNext()) { V_14.get_Current().Built(V_13); } } finally { if (V_14 != null) { V_14.Dispose(); } } V_0.Add(V_13); } } finally { ((IDisposable)V_2).Dispose(); } } return(V_0); }
public static bool IsModule(this IManifestInfo manifestInfo) { return(manifestInfo.Type.Equals("module", StringComparison.OrdinalIgnoreCase)); }
public IEnumerable <IFeatureInfo> GetFeatures(IExtensionInfo extensionInfo, IManifestInfo manifestInfo) { var featuresInfos = new List <IFeatureInfo>(); // Features and Dependencies live within this section var features = manifestInfo.ModuleInfo.Features.ToList(); if (features.Count > 0) { foreach (var feature in features) { if (String.IsNullOrWhiteSpace(feature.Id)) { throw new ArgumentException( $"A feature is missing a mandatory 'Id' property in the Module '{extensionInfo.Id}'"); } var featureId = feature.Id; var featureName = feature.Name ?? feature.Id; var featureDependencyIds = feature.Dependencies .Select(e => e.Trim()).ToArray(); if (!Int32.TryParse(feature.Priority ?? manifestInfo.ModuleInfo.Priority, out var featurePriority)) { featurePriority = 0; } var featureCategory = feature.Category ?? manifestInfo.ModuleInfo.Category; var featureDescription = feature.Description ?? manifestInfo.ModuleInfo.Description; var featureDefaultTenantOnly = feature.DefaultTenantOnly; var featureIsAlwaysEnabled = feature.IsAlwaysEnabled; var context = new FeatureBuildingContext { FeatureId = featureId, FeatureName = featureName, Category = featureCategory, Description = featureDescription, ExtensionInfo = extensionInfo, ManifestInfo = manifestInfo, Priority = featurePriority, FeatureDependencyIds = featureDependencyIds, DefaultTenantOnly = featureDefaultTenantOnly, IsAlwaysEnabled = featureIsAlwaysEnabled }; foreach (var builder in _featureBuilderEvents) { builder.Building(context); } var featureInfo = new FeatureInfo( context.FeatureId, context.FeatureName, context.Priority, context.Category, context.Description, context.ExtensionInfo, context.FeatureDependencyIds, context.DefaultTenantOnly, context.IsAlwaysEnabled); foreach (var builder in _featureBuilderEvents) { builder.Built(featureInfo); } featuresInfos.Add(featureInfo); } } else { // The Extension has only one feature, itself, and that can have dependencies var featureId = extensionInfo.Id; var featureName = manifestInfo.Name; var featureDependencyIds = manifestInfo.ModuleInfo.Dependencies .Select(e => e.Trim()).ToArray(); if (!Int32.TryParse(manifestInfo.ModuleInfo.Priority, out var featurePriority)) { featurePriority = 0; } var featureCategory = manifestInfo.ModuleInfo.Category; var featureDescription = manifestInfo.ModuleInfo.Description; var featureDefaultTenantOnly = manifestInfo.ModuleInfo.DefaultTenantOnly; var featureIsAlwaysEnabled = manifestInfo.ModuleInfo.IsAlwaysEnabled; var context = new FeatureBuildingContext { FeatureId = featureId, FeatureName = featureName, Category = featureCategory, Description = featureDescription, ExtensionInfo = extensionInfo, ManifestInfo = manifestInfo, Priority = featurePriority, FeatureDependencyIds = featureDependencyIds, DefaultTenantOnly = featureDefaultTenantOnly, IsAlwaysEnabled = featureIsAlwaysEnabled }; foreach (var builder in _featureBuilderEvents) { builder.Building(context); } var featureInfo = new FeatureInfo( context.FeatureId, context.FeatureName, context.Priority, context.Category, context.Description, context.ExtensionInfo, context.FeatureDependencyIds, context.DefaultTenantOnly, context.IsAlwaysEnabled); foreach (var builder in _featureBuilderEvents) { builder.Built(featureInfo); } featuresInfos.Add(featureInfo); } return(featuresInfos); }
private bool IsIntegrationFeature(IManifestInfo manifest) { return(manifest.Tags.Any(x => string.Equals(x, "integration", StringComparison.OrdinalIgnoreCase))); }
public IEnumerable <IFeatureInfo> GetFeatures( IExtensionInfo extensionInfo, IManifestInfo manifestInfo) { var features = new List <IFeatureInfo>(); // Features and Dependencies live within this section var featuresSectionChildren = manifestInfo.ConfigurationRoot.GetSection("Features").GetChildren().ToList(); if (featuresSectionChildren.Count > 0) { foreach (var featureSection in featuresSectionChildren) { var featureId = featureSection.Key; var featureDetails = featureSection.GetChildren().ToDictionary(x => x.Key, v => v.Value); var featureName = featureDetails.ContainsKey(NameKey) ? featureDetails[NameKey] : manifestInfo.Name; var featureDependencyIds = featureDetails.ContainsKey(DependenciesKey) ? featureDetails[DependenciesKey] .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(e => e.Trim()) .ToArray() : new string[0]; var manifestFeatureDetails = manifestInfo .ConfigurationRoot.GetChildren().ToDictionary(x => x.Key, v => v.Value); var featurePriority = featureDetails.ContainsKey(PriorityKey) ? int.Parse(featureDetails[PriorityKey]) : (manifestFeatureDetails.ContainsKey(PriorityKey) ? int.Parse(manifestFeatureDetails[PriorityKey]) : 0); var featureCategory = featureDetails.ContainsKey(CategoryKey) ? featureDetails[CategoryKey] : (manifestFeatureDetails.ContainsKey(CategoryKey) ? manifestFeatureDetails[CategoryKey] : null); var featureDescription = featureDetails.ContainsKey(DescriptionKey) ? featureDetails[DescriptionKey] : (manifestFeatureDetails.ContainsKey(DescriptionKey) ? manifestFeatureDetails[DescriptionKey] : null); var context = new FeatureBuildingContext { FeatureId = featureId, FeatureName = featureName, Category = featureCategory, Description = featureDescription, ExtensionInfo = extensionInfo, FeatureDetails = featureDetails, ManifestDetails = manifestFeatureDetails, ManifestInfo = manifestInfo, Priority = featurePriority, FeatureDependencyIds = featureDependencyIds }; foreach (var builder in _featureBuilderEvents) { builder.Building(context); } var featureInfo = new FeatureInfo( featureId, featureName, featurePriority, featureCategory, featureDescription, extensionInfo, featureDependencyIds); foreach (var builder in _featureBuilderEvents) { builder.Built(featureInfo); } features.Add(featureInfo); } } else { // The Extension has only one feature, itself, and that can have dependencies var featureId = extensionInfo.Id; var featureName = manifestInfo.Name; var featureDetails = manifestInfo.ConfigurationRoot.GetChildren().ToDictionary(x => x.Key, v => v.Value); var featurePriority = featureDetails.ContainsKey(PriorityKey) ? int.Parse(featureDetails[PriorityKey]) : 0; var featureDependencyIds = featureDetails.ContainsKey(DependenciesKey) ? featureDetails[DependenciesKey] .Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries) .Select(e => e.Trim()) .ToArray() : new string[0]; var featureCategory = featureDetails.ContainsKey(CategoryKey) ? featureDetails[CategoryKey] : null; var featureDescription = featureDetails.ContainsKey(DescriptionKey) ? featureDetails[DescriptionKey] : null; var context = new FeatureBuildingContext { FeatureId = featureId, FeatureName = featureName, Category = featureCategory, Description = featureDescription, ExtensionInfo = extensionInfo, FeatureDetails = featureDetails, ManifestDetails = featureDetails, ManifestInfo = manifestInfo, Priority = featurePriority, FeatureDependencyIds = featureDependencyIds }; foreach (var builder in _featureBuilderEvents) { builder.Building(context); } var featureInfo = new FeatureInfo( context.FeatureId, context.FeatureName, context.Priority, context.Category, context.Description, context.ExtensionInfo, context.FeatureDependencyIds); foreach (var builder in _featureBuilderEvents) { builder.Built(featureInfo); } features.Add(featureInfo); } return(features); }
public static bool IsTheme(this IManifestInfo manifestInfo) { return(manifestInfo?.Type?.Equals("theme", StringComparison.OrdinalIgnoreCase) ?? false); }
public IEnumerable <IFeatureInfo> GetFeatures(IPluginInfo pluginInfo, IManifestInfo manifestInfo) { var featuresInfos = new List <IFeatureInfo>(); var features = manifestInfo.ModuleInfo.Features.ToList(); if (features.Count > 0) { foreach (var feature in features) { if (String.IsNullOrWhiteSpace(feature.Id)) { throw new ArgumentException($"包含这个功能的Plugin没有定义Id '{pluginInfo.Id}'"); } var featureId = feature.Id; var featureName = feature.Name ?? feature.Id; var featureDependencyIds = feature.Dependencies .Select(e => e.Trim()).ToArray(); if (!int.TryParse(feature.Priority ?? manifestInfo.ModuleInfo.Priority, out int featurePriority)) { featurePriority = 0; } var featureCategory = feature.Category ?? manifestInfo.ModuleInfo.Category; var featureDescription = feature.Description ?? manifestInfo.ModuleInfo.Description; var featureDefaultTenantOnly = feature.DefaultTenantOnly; var featureManageDisallowed = feature.ManageDisallowed; var context = new FeatureBuildingContext { FeatureId = featureId, FeatureName = featureName, Category = featureCategory, Description = featureDescription, PluginInfo = pluginInfo, ManifestInfo = manifestInfo, Priority = featurePriority, FeatureDependencyIds = featureDependencyIds, DefaultTenantOnly = featureDefaultTenantOnly, ManageDisallowed = featureManageDisallowed }; foreach (var builder in _featureBuilderEvents) { builder.Building(context); } var featureInfo = new FeatureInfo( featureId, featureName, featurePriority, featureCategory, featureDescription, pluginInfo, featureDependencyIds, featureDefaultTenantOnly, featureManageDisallowed); foreach (var builder in _featureBuilderEvents) { builder.Built(featureInfo); } featuresInfos.Add(featureInfo); } } else { var featureId = pluginInfo.Id; var featureName = manifestInfo.Name; var featureDependencyIds = manifestInfo.ModuleInfo.Dependencies .Select(e => e.Trim()).ToArray(); if (!int.TryParse(manifestInfo.ModuleInfo.Priority, out int featurePriority)) { featurePriority = 0; } var featureCategory = manifestInfo.ModuleInfo.Category; var featureDescription = manifestInfo.ModuleInfo.Description; var featureDefaultTenantOnly = manifestInfo.ModuleInfo.DefaultTenantOnly; var featureManageDisallowed = manifestInfo.ModuleInfo.ManageDisallowed; var context = new FeatureBuildingContext { FeatureId = featureId, FeatureName = featureName, Category = featureCategory, Description = featureDescription, PluginInfo = pluginInfo, ManifestInfo = manifestInfo, Priority = featurePriority, FeatureDependencyIds = featureDependencyIds, DefaultTenantOnly = featureDefaultTenantOnly, ManageDisallowed = featureManageDisallowed }; foreach (var builder in _featureBuilderEvents) { builder.Building(context); } var featureInfo = new FeatureInfo( context.FeatureId, context.FeatureName, context.Priority, context.Category, context.Description, context.PluginInfo, context.FeatureDependencyIds, context.DefaultTenantOnly, context.ManageDisallowed); foreach (var builder in _featureBuilderEvents) { builder.Built(featureInfo); } featuresInfos.Add(featureInfo); } return(featuresInfos); }
public IFeatureInfoList GetFeatures(IExtensionInfo extensionInfo, IManifestInfo manifestInfo) { throw new NotImplementedException(); }