Вот новая реализация: < /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)
...
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
Мобильная версия