DynamicContent
Представление контента документа
Свойства
Набор свойств вычисляется в runtime на основе UserDataXSD. Скачать файл UserDataXSD можно методами Box.SaveTitleDynamicContentXSD(), Box.GetBase64TitleDynamicContentXSD().
Принцип построения DynamicContent’а по UserDataXSD описан ниже.
Также набор полей и методов узнать, используя объект Reflector.
Представление контента документа имеет рекурсивную структуру:
полями DynamicContent’а могут являться:
строки
объекты интерфейса IValueCollection
объекты DynamicContent
объекты IValueCollection могут содержать:
строки
объекты DynamicContent
Методы
Не имеет фиксированного набора методов. Наличие методов, их имена и интерфейс определяется наличием коллекций значений в текущем экземпляре объекта.
Общие правила формирования структуры DynamicContent’а
Элементы сложного типа будут представлены как DynamicContent
<xs:element name="ComplexElementName"> <xs:complexType>....<xs:element name="ComplexElementName" type="ComlexElementType">
Элементы встроенного типа и унаследованные от них будут представлены как строки
<xs:attribute name="SimpleElementName" type="string50">(<xs:simpleType name="string50"> <xs:restriction base="xs:string">)<xs:attribute name="SimpleElementName"><xs:simpleType><xs:restriction base="xs:decimal">...
Повторяющиеся элементы (
maxOccurs= "unbounded",maxOccurs > 1или повторяющиеся по умолчанию для описанного типа элемента) будут добавлены как IValueCollectionИмя поля в DynamicContent, соответствующего элементу XSD будет совпадать с именем элемента в XSD
Если у повторяющегося элемента XSD не указано имя, то будет применено имя
itemsЕсли тип элемента наследуется от другого типа, то наследник будет иметь все свойства родителя
<xs:complexType name="ChildType"><xs:extension base="ParentType">...
Для заполнения/чтения значения в xs:simpleContent в DynamicContent добавляется поле с именем
SimpleContentValue
Как работать с коллекциями
Чтобы добавить элемент в коллекцию, необходимо вызвать метод объекта, в котором эта коллекция лежит. Назовём этот объект
ВладелецКоллекцииИмя метода для добавления элемента —
"Add" + <Имя поля с коллекцией>Если коллекция хранит в себе повторяющиеся строки (а не DynamicContent), то метод нужно вызвать с одним параметром — добавляемой в коллекцию строкой. Возвращаемого значения у метода не будет
Если коллекция хранит не строки, то метод нужно вызвать без параметров. Метод вернёт добавленный в коллекцию элемент
См. также