【问题标题】:Glass Mapper: InferType is ignored when querying the SitecoreContextGlass Mapper:查询 SitecoreContext 时忽略 InferType
【发布时间】:2014-01-06 09:31:14
【问题描述】:

我已经在我的 Sitecore 7.1 解决方案上安装了 Glass.Mapper.Sc.CastleWindsor 版本的软件包 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; }
}

我有这个项目:

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

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

根据documentation on inferred types,我希望serviceConfig 的类型为JavascriptServiceConfiguration,但它的类型为ServiceConfiguration。我错过了什么吗?我没有对 glass 做一些特定的配置。

【问题讨论】:

    标签: c# sitecore glass-mapper sitecore7.1


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 这修复了它。我在您的解决方案中将“SitecoreAttributeConfigurationLoader”更改为“AttributeConfigurationLoader”,因为 Sitecore 被标记为过时 ;-)
    • @MichaelEdwards 谢谢。您可能还应该在 Glass 网站上更新 Tutorial 120
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多