为什么我的Enumerable不会被Glass.Mapper填充?

我完全不知道为什么这不起作用。 我有一个类,其中包含其他类的列表作为它的属性:

public class Widget { .... public virtual IEnumerable Buttons { get; set; } } [SitecoreType(TemplateId = "{B615973D-59F6-437E-9827-BA3A40068C69}", AutoMap =true)] public class WidgetButton : BasePage { [SitecoreField] public virtual string Title { get; set; } } 

我的sitecore项目有一个TreeListEx,其中包含一个项目:

在此处输入图像描述

我正在读这个项目:

 Widget widgetTest = SitecoreContext.GetItem(new Guid("{4FF5B96F-9606-4581-95F7-B6A7BAA4C28F}")); 

我的WidgetwidgetTest )包含widgetTest所有数据, 但是按钮 ! Buttons属性只是一个空列表。 我错过了什么我已经尝试了几种配置,发布等。根据Glass.Mapper教程,这应该有效


玻璃配置

Glass.Mapper.Sc.CastleWindsor.config

          

Glass.Mapper.Sc.Mvc.Config

           

直接去sitecore我可以得到我的项目:

 Sitecore.Data.Database context = Sitecore.Context.Database; var item = context.GetItem(new ID("{4FF5B96F-9606-4581-95F7-B6A7BAA4C28F}")); 

item包含一个名为Buttons的字段,该字段的value是treelist中项目的GUID( {3C18BF9F-9906-4807-83B9-73CA08E61C39} )。

如果我直接查询,我可以看到按钮:

 var buttonItem = context.GetItem(new ID("{3C18BF9F-9906-4807-83B9-73CA08E61C39}")); 

所以一切看起来都很好! 为什么没有玻璃映射器映射?

我有一个解决方案,不要问我为什么这样有效,因为我通过反复试验找到了它。 基本上这样做似乎使它工作:

 [SitecoreType(AutoMap =true)] public class Widget { .... [SitecoreField(FieldType =SitecoreFieldType.TreelistEx)] public virtual IEnumerable Buttons { get; set; } } 

特别是我想指定FieldType