Example #1
0
        /// <summary>
        /// Выполняет поиск закладки в документе по значению параметра <paramref name="name"/>,
        /// и заполняет её значением <c><paramref name="value"/>.ToString()</c>.
        /// Если закладка не найдена, действие не выполняется.
        /// </summary>
        /// <param name="name">Имя целевой закладки.</param>
        /// <param name="value">
        /// Ссылка на объект строковое представление которого необходимо поместить в закладку.
        /// </param>
        /// <exception cref="InvalidSdtElementException">
        /// Возникает если дерево дочерних элементов <see cref="SdtElement"/> содержит недопустимые элементы
        /// или отсутствует обязательный дочерний элемент.
        /// </exception>
        protected void FillBookmark(string name, object value)
        {
            name.ThrowIfNullOrWhiteSpace(nameof(name));
            value.ThrowIfNull(nameof(value));

            try
            {
                BookmarkStart targetBookmark = _bookmarks.SingleOrDefault(bookmark => bookmark.Name == name);
                targetBookmark.Do(container =>
                {
                    container.Parent.InsertAfter(new Run(new Text(value.ToString())), container);
                });
            }
            catch (InvalidOperationException)
            {
                throw new InvalidSdtElementException(name);
            }
        }