c# – Glass Mapper:查询SitecoreContext时,InferType将被忽略
发布时间:2020-12-15 06:36:34 所属栏目:百科 来源:网络整理
导读:在我的Sitecore 7.1解决方案中,我已经在版本3.1.2.11中安装了Glass.Mapper.Sc.CastleWindsor包,并尝试使用推断的类型.我有以下类: [SitecoreType]public class ServiceConfiguration{ [SitecoreField(FieldName = "Service Id")] public virtual string Ser
在我的Sitecore 7.1解决方案中,我已经在版本3.1.2.11中安装了Glass.Mapper.Sc.CastleWindsor包,并尝试使用推断的类型.我有以下类:
[SitecoreType] public class ServiceConfiguration { [SitecoreField(FieldName = "Service Id")] public virtual string ServiceId { get; set; } } [SitecoreType(TemplateId = "{26512C19-8D30-4A1E-A2CD-3BA89AF70E71}")] public class JavascriptServiceConfiguration : ServiceConfiguration { [SitecoreField(FieldName = "Is Header Responsive")] public virtual bool IsHeaderResponsive { get; set; } } 我有这个项目: 在我的代码中,我尝试从当前由玻璃映射的上下文代码获取这个项目: var serviceConfig = (new SitecoreContext()).GetItem<ServiceConfiguration>("{5436EEC6-1A4D-455F-8EF7-975C51FAE649}",inferType: true); 根据documentation on inferred types,我希望serviceConfig将类型为JavascriptServiceConfiguration,但它的类型为ServiceConfiguration.我错过了什么吗?我没有对玻璃做一些具体的配置. 解决方法
在推断类型之前,必须由Glass.Mapper加载.最近版本的Glass加载类型,当它们被请求时,它不适用于推断类型.要解决此问题,您可以强制Glass在应用程序启动时加载类型.
首先在您的解决方案中找到GlassMapperScCustom类.然后,您应该更新GlassLoaders方法: public static IConfigurationLoader[] GlassLoaders() { var attributes = new AttributeConfigurationLoader("Your assembly name"); return new IConfigurationLoader[] {attributes }; } 让我知道,如果这不能解决它. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |