Glass Mapper: InferType игнорируется при запросе SitecoreContext - программирование

Glass Mapper: InferType игнорируется при запросе SitecoreContext

Я установил пакет Glass.Mapper.Sc.CastleWindsor в версию 3.1.2.11 в мое решение Sitecore 7.1 и пытаюсь работать с выводимыми типами. У меня есть следующие классы:

[SitecoreType]
public class ServiceConfiguration
{
    [SitecoreField(FieldName = "Service Id")]
    public virtual string ServiceId { get; set; }
}

[SitecoreType(TemplateId = "{26512C19-8D30-4A1E-A2CD-3BA89AF70E71}")]
public class JavascriptServiceConfiguration : ServiceConfiguration
{
    [SitecoreField(FieldName = "Is Header Responsive")]
    public virtual bool IsHeaderResponsive { get; set; }
}

И у меня есть этот элемент:

enter image description here

В моем коде я пытаюсь получить этот элемент из текущего контекста, отображаемого стеклом, со следующей строкой кода:

var serviceConfig = (new SitecoreContext()).GetItem<ServiceConfiguration>("{5436EEC6-1A4D-455F-8EF7-975C51FAE649}", inferType: true);

В соответствии с документацией по выводимым типам, я ожидаю, что serviceConfig будет иметь тип JavascriptServiceConfiguration, но он имеет тип ServiceConfiguration. Я что-то упускаю? Я не делал определенную конфигурацию для стекла.

4b9b3361

Ответ 1

Прежде чем типы могут быть выведены, они должны быть загружены Glass.Mapper. Более поздняя версия типов загрузок стекла по мере их запроса, но это не будет работать для предполагаемых типов. Чтобы устранить это, вы можете заставить Glass загружать типы при запуске приложения.

Сначала найдите класс GlassMapperScCustom в своем решении. Затем вы должны обновить метод GlassLoaders:

    public static IConfigurationLoader[] GlassLoaders()
    {
        var attributes = new AttributeConfigurationLoader("Your assembly name");

        return new IConfigurationLoader[] {attributes };
    }

Сообщите мне, если это не исправить.