le code suivant spécifie un type « MyBase64Binary » qui est dérivé d'une classe de base « TestBase »erreur constructeur XmlSerializer avec classe dérivée d'une classe de base
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()
{
}
}
}
Si je tente de créer un XmlSerializer comme celui-ci
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));
}
}
}
de celui-ci alors que je reçois une erreur InvalidOperationException:
{"There was an error reflecting type 'Test.MyBase64Binary'."}
Et l'exception interne me dit ce qui suit:
{"Cannot serialize object of type 'Test.MyBase64Binary'. Consider changing type of XmlText member 'Test.MyBase64Binary.__Value' from System.Byte[] to string or string array."}
Si je tire pas de la classe « TestBase » puis tout fonctionne très bien.
Je ne comprends pas la solution. S'il vous plaît aider.
Qu'est-ce qui ne va pas?
Salutations de l'Allemagne
Jan
+1, le problème est l'attribut, il n'a rien à voir avec la classe de base. –
Réservoirs! Ça semble fonctionner! Mais pourquoi le sérialiseur fonctionne-t-il si ommitting la classe de base et ne dérivent pas? L'exception ne devrait-elle pas également se produire? –
@Jan Vivre le même problème. Si la classe de base est omise, cela fonctionne. Quelque chose d'étrange comportement ... – Sven