Fixing multiple drivers per element issue.

This issue fixes an issue where multiple drivers for the same element type would throw an exception due to the element type being present more than once in the element type repository.
This commit is contained in:
Sipke Schoorstra
2014-12-21 11:55:14 +01:00
parent dca8697767
commit 15c02aaa3a

View File

@@ -20,7 +20,12 @@ namespace Orchard.Layouts.Providers {
public IEnumerable<ElementDescriptor> HarvestElements(HarvestElementsContext context) {
var drivers = _elementManager.Value.GetDrivers();
var elementTypes = drivers.Select(x => x.GetType().BaseType.GenericTypeArguments[0]).Where(x => !x.IsAbstract && !x.IsInterface).ToArray();
var elementTypes = drivers
.Select(x => x.GetType().BaseType.GenericTypeArguments[0])
.Where(x => !x.IsAbstract && !x.IsInterface)
.Distinct()
.ToArray();
return elementTypes.Select(elementType => {
var element = _factory.Value.Activate(elementType);
return new ElementDescriptor(elementType, element.Type, element.DisplayText, element.Category) {