本文整理汇总了C#中Orchard.DisplayManagement.Descriptors.ShapeTableBuilder.BuildAlterations方法的典型用法代码示例。如果您正苦于以下问题:C# ShapeTableBuilder.BuildAlterations方法的具体用法?C# ShapeTableBuilder.BuildAlterations怎么用?C# ShapeTableBuilder.BuildAlterations使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Orchard.DisplayManagement.Descriptors.ShapeTableBuilder
的用法示例。
在下文中一共展示了ShapeTableBuilder.BuildAlterations方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetShapeTable
public ShapeTable GetShapeTable(string themeName)
{
// Use a lazy initialized factory to prevent multiple threads from building
// the same table in parallel as it is costly
return _shapeTables.GetOrAdd(themeName ?? "", new Lazy<ShapeTable>(() =>
{
_logger.LogInformation("Start building shape table");
IList<IReadOnlyList<ShapeAlteration>> alterationSets = new List<IReadOnlyList<ShapeAlteration>>();
foreach (var bindingStrategy in _bindingStrategies)
{
Feature strategyDefaultFeature =
_typeFeatureProvider.GetFeatureForDependency(bindingStrategy.GetType());
var builder = new ShapeTableBuilder(strategyDefaultFeature);
bindingStrategy.Discover(builder);
var builtAlterations = builder.BuildAlterations().ToReadOnlyCollection();
if (builtAlterations.Any())
{
alterationSets.Add(builtAlterations);
}
}
var alterations = alterationSets
.SelectMany(shapeAlterations => shapeAlterations)
.Where(alteration => IsModuleOrRequestedTheme(alteration, themeName))
.OrderByDependenciesAndPriorities(AlterationHasDependency, GetPriority)
.ToList();
var descriptors = alterations.GroupBy(alteration => alteration.ShapeType, StringComparer.OrdinalIgnoreCase)
.Select(group => group.Aggregate(
new ShapeDescriptor { ShapeType = group.Key },
(descriptor, alteration) =>
{
alteration.Alter(descriptor);
return descriptor;
})).ToList();
foreach (var descriptor in descriptors)
{
foreach (var alteration in alterations.Where(a => a.ShapeType == descriptor.ShapeType).ToList())
{
var local = new ShapeDescriptor { ShapeType = descriptor.ShapeType };
alteration.Alter(local);
descriptor.BindingSources.Add(local.BindingSource);
}
}
var result = new ShapeTable
{
Descriptors = descriptors.ToDictionary(sd => sd.ShapeType, StringComparer.OrdinalIgnoreCase),
Bindings = descriptors.SelectMany(sd => sd.Bindings).ToDictionary(kv => kv.Key, kv => kv.Value, StringComparer.OrdinalIgnoreCase),
};
//await _eventBus.NotifyAsync<IShapeTableEventHandler>(x => x.ShapeTableCreated(result));
_logger.LogInformation("Done building shape table");
return result;
})).Value;
}
示例2: GetShapeTable
public ShapeTable GetShapeTable(string themeName)
{
return _cacheManager.Get(themeName ?? "", x => {
Logger.Information("Start building shape table");
var alterationSets = _parallelCacheContext.RunInParallel(_bindingStrategies, bindingStrategy => {
Feature strategyDefaultFeature = bindingStrategy.Metadata.ContainsKey("Feature") ?
(Feature)bindingStrategy.Metadata["Feature"] :
null;
var builder = new ShapeTableBuilder(strategyDefaultFeature);
bindingStrategy.Value.Discover(builder);
return builder.BuildAlterations().ToReadOnlyCollection();
});
var alterations = alterationSets
.SelectMany(shapeAlterations => shapeAlterations)
.Where(alteration => IsModuleOrRequestedTheme(alteration, themeName))
.OrderByDependenciesAndPriorities(AlterationHasDependency, GetPriority)
.ToList();
var descriptors = alterations.GroupBy(alteration => alteration.ShapeType, StringComparer.OrdinalIgnoreCase)
.Select(group => group.Aggregate(
new ShapeDescriptor { ShapeType = group.Key },
(descriptor, alteration) => {
alteration.Alter(descriptor);
return descriptor;
})).ToList();
foreach(var descriptor in descriptors) {
foreach(var alteration in alterations.Where(a => a.ShapeType == descriptor.ShapeType).ToList()) {
var local = new ShapeDescriptor { ShapeType = descriptor.ShapeType };
alteration.Alter(local);
descriptor.BindingSources.Add(local.BindingSource);
}
}
var result = new ShapeTable {
Descriptors = descriptors.ToDictionary(sd => sd.ShapeType, StringComparer.OrdinalIgnoreCase),
Bindings = descriptors.SelectMany(sd => sd.Bindings).ToDictionary(kv => kv.Key, kv => kv.Value, StringComparer.OrdinalIgnoreCase),
};
_shapeTableEventHandlers.Invoke(ctx => ctx.ShapeTableCreated(result), Logger);
Logger.Information("Done building shape table");
return result;
});
}
示例3: GetAlterationBuilders
static IEnumerable<ShapeAlteration> GetAlterationBuilders(IShapeTableProvider strategy) {
var builder = new ShapeTableBuilder(null);
strategy.Discover(builder);
return builder.BuildAlterations();
}
示例4: GetShapeTable
public ShapeTable GetShapeTable(string themeName)
{
var cacheKey = $"ShapeTable:{themeName}";
ShapeTable shapeTable;
if (!_memoryCache.TryGetValue(cacheKey, out shapeTable))
{
if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Start building shape table");
}
IList<IReadOnlyList<ShapeAlteration>> alterationSets = new List<IReadOnlyList<ShapeAlteration>>();
foreach (var bindingStrategy in _bindingStrategies)
{
Feature strategyDefaultFeature =
_typeFeatureProvider.GetFeatureForDependency(bindingStrategy.GetType());
var builder = new ShapeTableBuilder(strategyDefaultFeature);
bindingStrategy.Discover(builder);
var builtAlterations = builder.BuildAlterations().ToReadOnlyCollection();
if (builtAlterations.Any())
{
alterationSets.Add(builtAlterations);
}
}
var alterations = alterationSets
.SelectMany(shapeAlterations => shapeAlterations)
.Where(alteration => IsModuleOrRequestedTheme(alteration, themeName))
.OrderByDependenciesAndPriorities(AlterationHasDependency, GetPriority)
.ToList();
var descriptors = alterations.GroupBy(alteration => alteration.ShapeType, StringComparer.OrdinalIgnoreCase)
.Select(group => group.Aggregate(
new ShapeDescriptor { ShapeType = group.Key },
(descriptor, alteration) =>
{
alteration.Alter(descriptor);
return descriptor;
})).ToList();
foreach (var descriptor in descriptors)
{
foreach (var alteration in alterations.Where(a => a.ShapeType == descriptor.ShapeType).ToList())
{
var local = new ShapeDescriptor { ShapeType = descriptor.ShapeType };
alteration.Alter(local);
descriptor.BindingSources.Add(local.BindingSource);
}
}
shapeTable = new ShapeTable
{
Descriptors = descriptors.ToDictionary(sd => sd.ShapeType, StringComparer.OrdinalIgnoreCase),
Bindings = descriptors.SelectMany(sd => sd.Bindings).ToDictionary(kv => kv.Key, kv => kv.Value, StringComparer.OrdinalIgnoreCase),
};
//await _eventBus.NotifyAsync<IShapeTableEventHandler>(x => x.ShapeTableCreated(result));
if (_logger.IsEnabled(LogLevel.Information))
{
_logger.LogInformation("Done building shape table");
}
_memoryCache.Set(cacheKey, shapeTable, new MemoryCacheEntryOptions { Priority = CacheItemPriority.NeverRemove });
}
return shapeTable;
}