我们正在运行Sitecore 7.2,正在探索将Glass.Mapper.Sc.CastleWindsor用于刚刚开始的大型项目。我们遇到了问题。
我们有以下解决方案: 1.核心可重用代码的基础项目 2.可重复使用的Web代码,控件等的基本Web项目(参见#1) 3.域模型和其他非Web代码的项目特定项目(参见#1) 4.项目特定的Web项目(参见#1,2,3)
项目#2和#4指向同一个Web根目录。我们运行Sitecore的多站点实例,但这个项目是我们在7.x版本上的第一个;其他人将在适当的时候迁移。
在GlassMapperScCustom GlassLoaders()方法中,我们有:
return new IConfigurationLoader[] { new SitecoreAttributeConfigurationLoader("{assembly name of project # 3}") };
对于我们的第一个概念验证,我们在项目#3中找到了一个域模型类,并尝试在项目#4中使用Glass映射。没有骰子。以下所有内容都返回一个项目,但没有填写字段:
new SitecoreContext().GetCurrentItem<{class name}>()
new SitecoreContext().GetItem<{class name}>("path")
new SitecoreContext().GetItem<{class name}>(new Guid("Sitecore GUID"))
我们已经尝试在所有四个项目中安装nuget包Glass.Mappers.Sc.CastleWindsor,但无济于事。我们还尝试过使用VersionDisabler,检查网站语言等,但也没有取得成功。
Glass.Mapper.Sc教程和示例代码的部分不一致,我怀疑这是问题的一部分。一些教程显示了较旧的处理方式,其他一些是新的,但我们现在已经尝试了教程中显示的所有方法来加载我们的类。
此页面...... http://www.glass.lu/download/glass-sitecore-mapper/ ...似乎表明Glass只支持Sitecore到版本7.0。这是准确的,还是只是更过时的信息?链接似乎从该Marketplace页面转到旧的Sitecore Mapper网站。
我们需要很快完成这项工作,否则我们将不得不放弃使用Glass进行这个大型项目,我们不愿意这样做,因为这将意味着进一步使用自定义项目生成器或裸体物品访问。感谢您提供的任何帮助。
答案 0 :(得分:2)
我现在在Sitecore 7.2中使用旧版本的Glass(2.0.11),我对此没有任何问题。基本上,这是我从Global.asax
加载我的程序集(不涉及IoC):
using Glass.Sitecore.Mapper.Configuration.Attributes;
var loader = new AttributeConfigurationLoader(new[] {
"namespace, assembly",
"namespace#2, assembly#2",
});
var ctx = new Glass.Sitecore.Mapper.Context(loader);
类名可能有点不同,但这给你一个粗略的想法。
另外,我注意到在初始化Glass时我们使用namespace, assembly
表示法。也许这就是原因?
答案 1 :(得分:1)
您使用的是什么版本的Glass?在最新版本中,不推荐使用SitecoreAttributeConfigurationLoader
。对于基本用途,您根本不需要指定配置加载器。尝试使用开箱即用的GlassMapperScCustom。如果这不起作用,请尝试Glass.Mapper.Configuration.Attributes.AttributeConfigurationLoader
。