Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Glass Mapper Sc能否创建映射接口的实例?_C#_Sitecore_Glass Mapper_Sitecore8 - Fatal编程技术网

C# Glass Mapper Sc能否创建映射接口的实例?

C# Glass Mapper Sc能否创建映射接口的实例?,c#,sitecore,glass-mapper,sitecore8,C#,Sitecore,Glass Mapper,Sitecore8,我在项目中使用接口映射概念,因为我的Sitecore项使用/继承多个基本模板。这很好,但有时我需要创建实现我的模板接口的对象(即,我想向Sitecore添加项),这样我就不得不创建一个实现所需接口的类,而不是创建对象。我需要这样做吗?Glass.Mapper.Sc中是否有返回我可以使用的代理对象的东西?因此我尝试想象一种可能的场景,您可以使用Castle的ProxyGenerator基于一个或多个接口生成一个对象。但我怀疑您会遇到问题,因为Glass的SitecoreService希望使用类型配

我在项目中使用接口映射概念,因为我的Sitecore项使用/继承多个基本模板。这很好,但有时我需要创建实现我的模板接口的对象(即,我想向Sitecore添加项),这样我就不得不创建一个实现所需接口的类,而不是创建对象。我需要这样做吗?Glass.Mapper.Sc中是否有返回我可以使用的代理对象的东西?

因此我尝试想象一种可能的场景,您可以使用Castle的ProxyGenerator基于一个或多个接口生成一个对象。但我怀疑您会遇到问题,因为Glass的SitecoreService希望使用类型配置,而如果生成代理,您将无法使用类型配置

但是,使用接口创建新项应该是可行的,如下所示:

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);
var服务=新站点核心服务(“主”);
var newItem=service.Create(parentItem,“新项目名称”);
//填充属性
newItem.Introduction=“一开始有一个…”;
service.Save(newItem);
ISitecoreItem是父项的类型,您可以为此使用公共接口。IArticle是新项的类型


我还没有测试过这个,但是看看Glass的源代码,我不明白为什么这个不应该工作。

我不确定我是否遵循了这个。。为什么创建一个实现接口的类会有问题?如果您展示一些您想做的代码,可能会有所帮助。@RvanDalen创建一个实现我的接口的类不是问题。我想知道我是否需要这样做,因为Glass在内部创建代理对象,我问的是:我可以从Glass中获取代理对象,这样我就不需要创建类了吗?lukasz,你是说在实例化对象时动态创建的吗?我想你指的是对象关系映射器,看看GlassMapper:)谢谢。效验如神