Glass Mapper Sc 可以创建映射接口的实例吗?
Can Glass Mapper Sc create instance of mapping interface?
我在我的项目中使用接口映射概念,因为我的 Sitecore 项目 use/inherit 有多个基本模板。这很好用,但有时我需要创建实现我的模板接口的对象(即我想将项目添加到 Sitecore)来做到这一点我被迫创建一个 class 来实现所需的接口而不是创建对象。我需要这样做吗? Glass.Mapper.Sc 中是否有我可以使用的 returns 代理对象?
所以我试着想象一个可能的场景,你会使用 Castle 的 ProxyGenerator 来生成一个基于一个或多个接口的对象。但我怀疑你会 运行 遇到问题,因为 Glass 的 SitecoreService 需要一个 TypeConfiguration 来工作,如果你生成一个代理,你将不会有它。
但是,使用接口创建新项目应该是这样的:
var service = new SitecoreService("master");
var newItem = service.Create<IArticle, ISitecoreItem>(parentItem, "New item name");
//populate the properties
newItem.Introduction = "In the beginning there was a...";
service.Save(newItem);
ISitecoreItem 是父项的类型,您可以为此使用通用接口。 IArticle 是新项目的类型。
我还没有对此进行测试,但查看 Glass 的源代码我不明白为什么它不应该工作。
我在我的项目中使用接口映射概念,因为我的 Sitecore 项目 use/inherit 有多个基本模板。这很好用,但有时我需要创建实现我的模板接口的对象(即我想将项目添加到 Sitecore)来做到这一点我被迫创建一个 class 来实现所需的接口而不是创建对象。我需要这样做吗? Glass.Mapper.Sc 中是否有我可以使用的 returns 代理对象?
所以我试着想象一个可能的场景,你会使用 Castle 的 ProxyGenerator 来生成一个基于一个或多个接口的对象。但我怀疑你会 运行 遇到问题,因为 Glass 的 SitecoreService 需要一个 TypeConfiguration 来工作,如果你生成一个代理,你将不会有它。
但是,使用接口创建新项目应该是这样的:
var service = new SitecoreService("master");
var newItem = service.Create<IArticle, ISitecoreItem>(parentItem, "New item name");
//populate the properties
newItem.Introduction = "In the beginning there was a...";
service.Save(newItem);
ISitecoreItem 是父项的类型,您可以为此使用通用接口。 IArticle 是新项目的类型。
我还没有对此进行测试,但查看 Glass 的源代码我不明白为什么它不应该工作。