为什么所有Glass.Mapper字段都是虚拟的?

Glass.Mapper文档说明 :

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很重要? 没有这个,似乎工作得很好。 我什么都看不到inheritance字段并overrides它们?

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