【发布时间】:2015-03-19 15:05:37
【问题描述】:
更新到 Glass.Mapper.Sc 3.2.3.50 后,我得到:
找不到数据映射器来处理属性 AbstractPropertyConfiguration 属性:Regions 类型:[type].IEventSearch Assembly:[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);
}
}
【问题讨论】:
-
能否告诉我您使用的是哪个版本的 Glass.Mapper.Sc.CastleWindsor?最新版本是 3.3.0.25。
标签: sitecore glass-mapper