Glass Mapper:找不到数据映射器来处理属性AbstractPropertyConfiguration属性

时间:2015-03-18 07:25:45

标签: sitecore glass-mapper

更新到Glass.Mapper.Sc 3.2.3.50后,我得到:

找不到数据映射器来处理属性AbstractPropertyConfiguration属性:Regions类型:[type] .IEventSearch程序集:[assembly],Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null

第23行:

Line 21:             //create a context
Line 22:             Context context = Context.Create(resolver);
Line 23:             context.Load(new IConfigurationLoader[]
Line 24:             {
Line 25:                 new EventSearchMap().Load(),

整个方法:

    public void Process(PipelineArgs args)
    {
        //create the resolver
        DependencyResolver resolver = DependencyResolver.CreateStandardResolver();

        //install the custom services
        var config = new Config();
        resolver.Container.Install(new SitecoreInstaller(config));

        //create a context
        Context context = Context.Create(resolver);
        context.Load(new IConfigurationLoader[]
        {
            new EventSearchMap().Load(),
            new RegionMap().Load(),
            new MunicipalityMap().Load(),
            new SearchMap().Load(),
            new PageMap().Load(),
            new HeaderMap().Load(),
            new SectionMenuMap().Load(),
            new BreadcrumbMap().Load(),
            new NavigationMap().Load(),
            new SitemapMap().Load()
        });
    }

在这里触发:

<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
  <sitecore>
    <pipelines>
      <initialize>
        <processor type="[Type].GlassMapper, [assembly]" />
      </initialize>
    </pipelines>
  </sitecore>
</configuration>

接口:IEventSearch

[SitecoreType]
public interface IEventSearch : ISitecoreItem
{
    IEnumerable<IRegion> Regions { get; set; }
    IEnumerable<IMunicipality> Municipalities { get; set; }
}

EventSearchMap类:

public class EventSearchMap
{
    public SitecoreFluentConfigurationLoader Load()
    {
        var loader = new SitecoreFluentConfigurationLoader();
        SitecoreType<IEventSearch> type = loader.Add<IEventSearch>().AutoMap();

        type.Delegate(x => x.Regions).GetValue(GetRegions);
        type.Delegate(x => x.Municipalities).GetValue(GetMunicipalities);

        return loader;
    }

    private IEnumerable<IMunicipality> GetMunicipalities(SitecoreDataMappingContext arg)
    {
        var municipalities = new List<IMunicipality>();
        foreach (IRegion region in GetRegions(arg))
        {
            region.Municipalities.ForEach(municipalities.Add);
        }
        return municipalities.OrderBy(x => x.Title, StringComparer.CurrentCultureIgnoreCase);
    }

    private IEnumerable<IRegion> GetRegions(SitecoreDataMappingContext arg)
    {
        var context = new Context();
        return from region in context.EventSearchPage.Children
            select arg.Service.Cast<IRegion>(region);
    }
}

1 个答案:

答案 0 :(得分:3)

你的评论迈克尔,请把我送上正确的道路。

解决方案是将Glass.Mapper.Sc.CastleWindsor更新为3.3.0.25。 我在3.2.1.23。

但我之前尝试过:

PM> Update-Package Glass.Mapper.Sc.CastleWindsor
No updates available for 'Glass.Mapper.Sc.CastleWindsor' in project 'Core'.

但是你可以看到它说“没有可用的更新”。

解决方案是:

Install-Package Glass.Mapper.Sc.CastleWindsor -version 3.3.0.25