10

我已经在我的 Sitecore 7.1 解决方案上安装了该软件包Glass.Mapper.Sc.CastleWindsor,并且正在尝试使用推断类型。3.1.2.11我有以下课程:

[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; }
}

我有这个项目:

在此处输入图像描述

在我的代码中,我尝试使用以下代码行从 glass 映射的当前上下文中获取此项目:

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

根据关于推断类型的文档,我希望它是serviceConfigtype 的JavascriptServiceConfiguration,但它是 type 的ServiceConfiguration。我错过了什么吗?我没有对玻璃做一些特定的配置。

4

1 回答 1

15

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

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

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

        return new IConfigurationLoader[] {attributes };
    }

如果这不能解决问题,请告诉我。

于 2014-01-07T11:31:56.960 回答