ArgumentOutOfRangeException при назначении EnumValue в OpenXML SDK 3.2.0.0C#

Место общения программистов C#
Ответить
Anonymous
 ArgumentOutOfRangeException при назначении EnumValue в OpenXML SDK 3.2.0.0

Сообщение Anonymous »

Я мигрирую код из OpenXML SDK версии 2.x до 3.2.0.0 и сталкиваюсь с проблемой с EnumValue при назначении значений элементам OpenXML. В версии 2.x я использовал enum.trarse для проверки и анализа значений перечисления, прежде чем назначать их. Однако в OpenXML SDK 3.x Enum.trarse больше не используется для enum-подобных значений. Вместо этого библиотека опирается на такие структуры, как TableLayoutValues, которые обеспечивают проверку через свойство IsValid. < /P>
Вот новая реализация: < /p>

Код: Выделить всё

if (new TableLayoutValues(inputValue) is TableLayoutValues layout && ((IEnumValue)layout).IsValid)
{
TableLayout tableLayout = new TableLayout();
tableLayout.Type = new EnumValue(layout);
tableProperties.AppendChild(tableLayout);
}
< /code>
Это бросает следующее исключение во время выполнения при создании EnumValue: < /p>
System.ArgumentOutOfRangeException: The specified value is not valid according to the specified enum type.
Parameter name: value
at DocumentFormat.OpenXml.EnumValue`1.ValidateSet(T value)
...
В версии 2.x следующий код работал без проблем:
if (Enum.TryParse(inputValue, true, out TableLayoutValues layout))
{
TableLayout tableLayout = new TableLayout();
tableLayout.Type = new EnumValue(layout);
tableProperties.AppendChild(tableLayout);
}
< /code>
Что я попробовал: < /strong> < /p>

Проверка значения с использованием ienumvalue.isvalid перед Присвоение его
enumvalue. < /li>
Обеспечение того, чтобы входная строка (inputvalue) соответствует ожидаемым значениям
(фиксирован, Autofit). < /li>
Отладка входной информации и подтверждение оно соответствует одному из действительных значений
enum. < /li>
< /ol>
Мой вопрос: < /strong > < /p>
На данный момент я чувствую, что пробовал все, о чем могу, но я все еще не могу понять, почему это исключение бросается. Почему EnumValue бросает аргумент в пользу rangeException в OpenXML SDK 3.2.0.0, даже когда значение проходит проверку ISVALID? Есть ли что -то в новой версии, которую я неправильно понимаю? Как я могу безопасно проанализировать и проверить значения enum в версии 3.x, чтобы избежать этого исключения?

Подробнее здесь: https://stackoverflow.com/questions/793 ... dk-3-2-0-0
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»