Сериализация: невозможно преобразовать строку типа [] [] в строку [] - PullRequest
2 голосов
/ 12 апреля 2019

У меня есть класс с зубчатым массивом. Когда я пытаюсь сериализовать его, я получаю следующее исключение:

System.InvalidOperationException HResult = 0x80131509 Сообщение = Невозможно создать временный класс (результат = 1). ошибка CS0030: невозможно преобразовать введите 'string [] []' to 'string []' error CS0029: не может быть неявно преобразовать тип 'string []' в 'string [] []'

Простая программа для воспроизведения проблемы:

using System.IO;
using System.Xml.Serialization;

namespace JaggedArraySerialization
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlSerializer xmlSerializer = new XmlSerializer(typeof(Class1));
            var class1 = new Class1();
            using (TextWriter stream = new StreamWriter(@"C:\temp\test.xml"))
            { 
                xmlSerializer.Serialize(stream, class1);
            }
        }
    }
}

А, класс Class1

using System;
using System.Xml.Serialization;

namespace JaggedArraySerialization
{
    [Serializable]
    public class Class1
    {
        [XmlElement]
        public string[][] MyJaggedArray { get; set; }
    }
}

Как я могу сериализовать мой зубчатый массив?

1 Ответ

2 голосов
/ 12 апреля 2019

Вы можете указать тип в свойстве MyJaggedArray, например:

    [Serializable]
    public class Class1
    {
        [XmlElement(Type = typeof(string[][]))]
        public string[][] MyJaggedArray { get; set; }
    }
...