Ошибка конструктора XmlSerializer с классом, полученным из базового класса

следующий код указывает тип "MyBase64Binary", который получен из базового класса "TestBase"

using System;
using System.Xml.Serialization;
using System.Collections;
using System.Xml.Schema;
using System.ComponentModel;

namespace Test
{
    public class TestBase
    {
        public TestBase()
        {
        }
    }

    [XmlType(TypeName = "base64Binary"), Serializable]
    public partial class MyBase64Binary : TestBase
    {
        [System.Xml.Serialization.XmlTextAttribute(DataType = "base64Binary")]
        [EditorBrowsable(EditorBrowsableState.Advanced)]
        public Byte[] __Value;

        [XmlIgnore]
        public Byte[] Value
        { 
            get { return __Value; }
            set { __Value = value; }
        }

        public MyBase64Binary()
        {
        }

    }
}

Если я пытаюсь создать XmlSerializer как это

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Serialization;

namespace Test1
{
    class Program
    {
        static void Main(string[] args)
        {
            XmlSerializer s = new XmlSerializer(typeof(Test.MyBase64Binary));
        }
    }
}

от этого затем я получаю Ошибку InvalidOperationException:

{"There was an error reflecting type 'Test.MyBase64Binary'."}

И Внутреннее Исключение говорит мне следующее:

{"Cannot serialize object of type 'Test.MyBase64Binary'. Consider changing type of XmlText member 'Test.MyBase64Binary.__Value' from System.Byte[] to string or string array."}

Если я не происхожу из класса "TestBase" затем, все хорошо работает.

Я не получаю решение. Помогите.
Что случилось?

Поздравления из Германии
Jan

7
задан Jan Ryll 31 March 2010 в 11:18
поделиться

2 ответа

Если вы измените XmlTextAttribute на XmlAttribute или XmlElement, все будет в порядке. Поскольку вы пытались использовать XmlTextAttribute, предполагалось, что это будет какая-то строка. Если вы хотите сериализовать фактический массив байтов, попробуйте XmlAttribute или XmlElement

4
ответ дан 7 December 2019 в 16:40
поделиться

Помогает ли добавление [Serializable] к базовому классу? Я бы посмотрел, чтобы ваш базовый класс также был правильно оформлен. Но я не знаю, поможет это или нет.

-1
ответ дан 7 December 2019 в 16:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: