Fixing exception in Layouts when a driver was inherited from a custom base driver, fixes #5509

This commit is contained in:
Lombiq
2015-07-16 12:11:38 +02:00
parent e74b6ad6f8
commit 99e05c8a09

View File

@@ -68,7 +68,21 @@ namespace Orchard.Layouts.Services {
}
private IEnumerable<IContentPartDriver> GetPartDrivers(string partName) {
return _contentPartDrivers.Where(x => x.GetType().BaseType.GenericTypeArguments[0].Name == partName);
return _contentPartDrivers.Where(x => GetPartOfDriver(x.GetType().BaseType).Name == partName);
}
private Type GetPartOfDriver(Type type) {
var baseType = type;
while (baseType != null && typeof(IContentPartDriver).IsAssignableFrom(baseType)) {
if (baseType.GenericTypeArguments.Any()) {
return baseType.GenericTypeArguments[0];
}
baseType = baseType.BaseType;
}
return null;
}
}
}