2015-09-11 3 views
1

Я использую интерфейс Mapping Concept в своем проекте, потому что мои элементы Sitecore используют/наследуют несколько базовых шаблонов. Это worknice, но иногда мне нужно создать объект, который реализует мой интерфейс шаблона (т. Е. Я хочу добавить элемент в Sitecore), чтобы сделать это, я вынужден создать класс, который реализует желаемый интерфейс и чем создает объект. Нужно ли мне это делать? Есть что-то в Glass.Mapper.Sc, который возвращает объект-прокси, который я могу использовать?Can Glass Mapper Sc создать экземпляр интерфейса отображения?

+1

Я не уверен, что я следую за этим. Почему это проблема для создания класса, реализующего интерфейс. Может быть, это поможет, если вы покажете какой-то код того, что вы хотели бы сделать. – RvanDalen

+1

@RvanDalen. Не создавать класс, реализующий мой интерфейс. Мне интересно, нужно ли мне это делать, потому что Glass создает внутренний объект прокси, я спросил: могу ли я получить стек объектной прокси-объекта, поэтому мне не нужно создавать классы. –

+0

lukasz, вы имеете в виду созданный динамически, когда экземпляр объекта? Я думаю, что вы имеете в виду объект реляционного картографа, посмотрите GlassMapper :) http://glass.lu –

ответ

2

Итак, я попытался представить себе возможный сценарий, в котором вы бы использовали ProxyGenerator Castle для создания объекта на основе одного или нескольких интерфейсов. Но я подозреваю, что у вас возникнут проблемы, потому что SitecoreService от Glass будет ожидать, что будет работать с 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 тип родителя, вы можете использовать общий интерфейс для этого. Ячейка - это тип нового элемента.

Я не тестировал это, но, глядя на исходный код Glass, я не понимаю, почему это не должно работать.

+0

Спасибо. Работайте как шарм! –