Quantcast
Channel: Developer to developer
Viewing all articles
Browse latest Browse all 9076

Custom ContentScannerExtension to update property order, order not changed

$
0
0

I've made a custom ContentScannerExtension that sets Order on the PropertyDefinitionModel in AssignValuesToProperties() method. I can see that i runs but the properties aren't sorted.
What could be wrong?

The scanner extensions looks like this and the log shows that properties gets the order i expect.

    [ServiceConfiguration(typeof(ContentScannerExtension))]
    public class SortOrderScannerExtension : ContentScannerExtension
    {
        private ILogger _logger = LogManager.GetLogger(typeof(SortOrderScannerExtension));
        public override void AssignValuesToProperties(ContentTypeModel contentTypeModel)
        {
            _logger.Information("Handling {0}", contentTypeModel.ModelType.FullName);
            base.AssignValuesToProperties(contentTypeModel);
            var propertySortOrderType = contentTypeModel.ModelType.GetNestedTypes(BindingFlags.Public|BindingFlags.NonPublic).FirstOrDefault(x => typeof(IPropertySortOrder).IsAssignableFrom(x));
            _logger.Information("propertySortOrder: {0}", propertySortOrderType?.FullName);
            if (propertySortOrderType == null)
                return;
            var sortOrders = (IPropertySortOrder)Activator.CreateInstance(propertySortOrderType);
            foreach (var propDef in contentTypeModel.PropertyDefinitionModels)
            {
                var sortOrder = sortOrders.GetSortOrder(propDef.Name);
                if (sortOrder > -1)
                {
                    _logger.Information("- property {0}'s sortOrder = {1}", propDef.Name, sortOrder);
                    propDef.Order = sortOrder;
                }
            }
        }
    }

Viewing all articles
Browse latest Browse all 9076

Trending Articles