GlassMapper - GetItem()方法无法将项目作为特定类型获取

本文关键字:项目 获取 类型 GetItem 方法 GlassMapper | 更新日期: 2023-09-27 17:54:28

我正在尝试使用GlassMapper获取项目,如下所示:

var myCustomObj=SitecoreContext.GetItem<IMy_Custom_Type>(itemId);

但是myCustomObj总是null。

当我尝试将项目作为IGlass_Base对象时,它可以工作:

var myCustomObj=SitecoreContext.GetItem<IGlass_Base>(itemId);

编辑:下面是IMy_Custom_Type的样子:

    /// <summary>
    /// IMy_Custom_Type Interface
    /// <para></para>
    /// <para>Path: /sitecore/templates/User Defined/###/Pages/My Custom Type</para>    
    /// <para>ID: dfacd744-0cf8-4917-922c-4baeb07dfe35</para>   
    /// </summary>
    [SitecoreType(TemplateId=IMy_Custom_TypeConstants.TemplateIdString, AutoMap = true )] //, Cachable = true
    public partial interface IMy_Custom_Type : IGlassBase , global::SC.Global.Models.TemplateModels.Base_Templates.IMetadata, global::SC.Global.Models.TemplateModels.Base_Templates.IBase_Background_Image
    {
        /// <summary>
        /// The My Custom field.
        /// <para></para>
        /// <para>Field Type: Multilist</para>      
        /// <para>Field ID: 43388fa5-a02a-425d-ae31-d94a12860748</para>
        /// <para>Custom Data: </para>
        /// </summary>
        [SitecoreField(IMy_Custom_TypeConstants.MyCustomFieldName)]
        IEnumerable<Guid> My_Custom_Field  {get; set;}
        :
        :
        // Few more fields          
    }

GlassMapper - GetItem<T>()方法无法将项目作为特定类型获取

创建名为My_Custom_Type的类,实现您的接口IMy_Custom_Type,并将其他接口的所有属性添加到该类:

public class My_Custom_Type : IMy_Custom_Type 
{
// IMy_Custom_Type  properties
// IGlassBase  properties
// IMetadata properties
// IBase_Background_Image properties
}  

然后尝试像这样强制转换你的对象:

var myCustomObj=SitecoreContext.GetItem<My_Custom_Type>(itemId);