следующий код указывает тип "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
Если вы измените XmlTextAttribute на XmlAttribute или XmlElement, все будет в порядке. Поскольку вы пытались использовать XmlTextAttribute, предполагалось, что это будет какая-то строка. Если вы хотите сериализовать фактический массив байтов, попробуйте XmlAttribute или XmlElement
Помогает ли добавление [Serializable]
к базовому классу? Я бы посмотрел, чтобы ваш базовый класс также был правильно оформлен. Но я не знаю, поможет это или нет.