c# – Glass Mapper:查询SitecoreContext时,InferType将被忽略

在我的Sitecore 7.1解决方案中,我已经在版本3.1.2.11中安装了Glass.Mapper.Sc.CastleWindsor包,并尝试使用推断的类型.我有以下类:
[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; }
}

我有这个项目:

在我的代码中,我尝试从当前由玻璃映射的上下文代码获取这个项目:

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

根据documentation on inferred types,我希望serviceConfig将类型为JavascriptServiceConfiguration,但它的类型为ServiceConfiguration.我错过了什么吗?我没有对玻璃做一些具体的配置.

解决方法

在推断类型之前,必须由Glass.Mapper加载.最近版本的Glass加载类型,当它们被请求时,它不适用于推断类型.要解决此问题,您可以强制Glass在应用程序启动时加载类型.

首先在您的解决方案中找到GlassMapperScCustom类.然后,您应该更新GlassLoaders方法

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

        return new IConfigurationLoader[] {attributes };
    }

让我知道,如果这不能解决它.

相关文章

目录简介使用JS互操作使用ClipLazor库创建项目使用方法简单测...
目录简介快速入门安装 NuGet 包实体类User数据库类DbFactory...
本文实现一个简单的配置类,原理比较简单,适用于一些小型项...
C#中Description特性主要用于枚举和属性,方法比较简单,记录...
[TOC] # 原理简介 本文参考[C#/WPF/WinForm/程序实现软件开机...
目录简介获取 HTML 文档解析 HTML 文档测试补充:使用 CSS 选...