【问题标题】:Why should all Glass.Mapper fields be virtual?为什么所有 Glass.Mapper 字段都应该是虚拟的?
【发布时间】:2015-10-13 14:23:31
【问题描述】:

Glass.Mapper documentation states

using Glass.Mapper.Sc.Configuration.Attributes;

namespace Glass.Mapper.Sites.Sc.Models.Landing
{
    public class HomePage
    {
        public virtual string Title { get; set; }
        public virtual string MainBody { get; set; }
    }
}

你可以看到这个类不包含任何特殊的标记但是 使用 Glass.Mapper 编写课程时要记住的一件重要事情 是确保您的所有字段都标记为虚拟。 Glass.Mapper 可以通过使用 按需映射和自动映射的组合。

它避免使用“按需”和“自动映射”,但没有解释如何或为什么。

有谁知道为什么将这些字段标记为virtual 很重要?没有这个,它似乎工作得很好。我看不到任何东西继承了这些字段和overrides 它们?

【问题讨论】:

  • 这些是属性,而不是字段。
  • 我将其保留为字段,因为这就是 sitecore(错误地)调用它们的原因

标签: c# sitecore glass-mapper


【解决方案1】:

如果您使用延迟加载,Glass 映射器需要能够动态生成一个代理类来包装您的类。为了能够继承和覆盖您的属性,需要将它们标记为 virtual

【讨论】:

  • Sitecore 不(据我所知)支持延迟加载吗?这是 Umbraco 的事吗?
  • Glass 在 Sitecore 实现中为您执行延迟加载。至少在 Sitecore 中尽可能多。
  • 我相信属性也需要是虚拟的才能使用InferredTypes
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-06
  • 2014-03-15
  • 2011-07-09
  • 2010-10-27
  • 1970-01-01
  • 2013-01-05
  • 2013-09-01
相关资源
最近更新 更多