有谁知道为什么 BlockData 类不直接实现 IContent ?
我知道在从数据库检索 BlockData 期间,Castle 创建的代理实现了 IContent。
如果 StackOverflow 不适合此类问题,请移走它。
EPiServer 的 Johan Björnfot 解释了一些细节在这篇文章中 http://world.episerver.com/blogs/Johan-Bjornfot/Dates1/2012/11/Shared-blocks--IContent/.
Excerpt:
“在 CMS 的早期版本中,页面 (PageData) 是内容存储库(传统上的 DataFactory)处理的唯一内容类型。在 CMS7 中,这种情况发生了变化,因此现在内容存储库 (IContentRepository) 处理 IContent 实例。这意味着需要 .NET可以从内容存储库保存/加载的类型是它实现了接口 EPiServer.Core.IContent。
CMS 中内置了一些 IContent 实现,例如 PageData 和 ContentFolder(用于对共享块实例进行分组),并且还可以注册自定义 IContent 实现。如果您查看 BlockData,您会发现它没有实现 IContent,那么如何然后处理共享块实例吗?
答案是,在运行时创建共享块实例时(例如,通过调用 IContentRepository.GetDefault,其中 T 是从 BlockData 继承的类型),CMS 将使用称为 mixin 的技术创建继承 T 的新 .NET 类型,其中新的生成的子类将实现一些额外的接口(包括 IContent)。”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)