Я использую сериализацию XML для создания файла в формате, специфичном для другого приложения. Одним из требований является то, что все логические значения должны быть представлены как 1 или 0. Я рассмотрел некоторые возможности, в том числе struct , чтобы легко и без проблем справиться с этим. В настоящее время я ищу другое место, которое должно использовать enum.
public enum BoolEnum
{
[XmlEnum("0")]
False = 0,
[XmlEnum("1")]
True = 1
}
Пока что это прекрасно работает и намного чище. НО (!) Я также пытаюсь сделать десериализацию легкой, и я просто хотел бы иметь возможность обрабатывать ошибки. Если я создаю недопустимый тег:
<invalid>2</invalid>
чтобы быть десериализованным как BoolEnum, я получаю исключение InvalidOperationException внутри другого исключения InvalidOperationException. Как я могу поймать это исключение в перечислении?
Добавление:
Функция десериализации:
static void Deserialize<T>(out T result, string sourcePath) where T : class
{
FileStream fileStream = null;
try
{
fileStream = new FileStream(sourcePath, FileMode.Open, FileAccess.Read);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
result = xmlSerializer.Deserialize(fileStream) as T;
}
finally
{
if (fileStream != null)
fileStream.Close();
}
}
Десериализованный объект:
public class Test
{
[XmlElement("someboolvalue")
public BoolEnum SomeBoolValue { get; set; }
}