Jan*_*yll 7 .net c# xml serialization xmlserializer
以下代码指定从基类"TestBase"派生的类型"MyBase64Binary"
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()
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试创建这样的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));
}
}
}
Run Code Online (Sandbox Code Playgroud)
从这一个然后我得到一个InvalidOperationException错误:
{"There was an error reflecting type 'Test.MyBase64Binary'."}
Run Code Online (Sandbox Code Playgroud)
内部例外告诉我以下内容:
{"Cannot serialize object of type 'Test.MyBase64Binary'. Consider changing type of XmlText member 'Test.MyBase64Binary.__Value' from System.Byte[] to string or string array."}
Run Code Online (Sandbox Code Playgroud)
如果我不是从"TestBase"类派生的,那么一切正常.
我没有得到解决方案.请帮忙.
怎么了?
来自德国的问候
Jan
如果将 XmlTextAttribute 更改为 XmlAttribute 或 XmlElement 应该没问题。由于您尝试使用 XmlTextAttribute,因此它假定它是某种字符串。如果您想要序列化实际的字节数组,请尝试 XmlAttribute 或 XmlElement