Я использую концепцию сопоставления интерфейсов в своем проекте, потому что мои элементы Sitecore используют/наследуют несколько базовых шаблонов. Это работает хорошо, но иногда мне нужно создать объект, который реализует мой интерфейс шаблона (т.е. я хочу добавить элемент в Sitecore), чтобы сделать это, я вынужден создать класс, который реализует желаемый интерфейс, а затем создать объект. Нужно ли мне это делать? Есть ли в Glass.Mapper.Sc что-то, что возвращает прокси-объект, который я могу использовать?
Может ли Glass Mapper Sc создать экземпляр интерфейса сопоставления?
comment
Я не уверен, что понимаю это... почему проблематично создать класс, реализующий интерфейс? Может быть, это поможет, если вы покажете какой-то код того, что вы хотели бы сделать.
- person RvanDalen   schedule 11.09.2015
comment
@RvanDalen Создать класс, реализующий мой интерфейс, не проблема. Мне интересно, нужно ли мне это делать, потому что Glass создает прокси-объект внутри, я спросил: могу ли я получить прокси-объект из стекла, чтобы мне не нужно было создавать классы.
- person Łukasz Adamus   schedule 11.09.2015
comment
lukasz, вы имеете в виду создание динамически, когда вы создаете объект? Я думаю, что вы имеете в виду объектно-реляционный сопоставитель, взгляните на GlassMapper :) glass.lu
- person Charlie Afford   schedule 11.09.2015
Ответы (1)
Поэтому я попытался представить возможный сценарий, в котором вы использовали бы Castle ProxyGenerator для создания объекта на основе одного или нескольких интерфейсов. Но я подозреваю, что вы столкнетесь с проблемами, потому что 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 — это тип родителя, для этого вы можете использовать общий интерфейс. IArticle — это тип нового элемента.
Я не проверял это, но, глядя на исходный код Glass, я не понимаю, почему это не должно работать.
person
RvanDalen
schedule
11.09.2015
Спасибо. Работай как шарм!
- person Łukasz Adamus; 15.09.2015