J'ai une classe en C# que j'essaie de sérialiser en utilisant un DataContractSerializer. Il ressemble à ceci:Ignorer les types imbriqués avec DataContractSerializer
namespace Foo
{
[DataContract(Name = "Bar")]
class Bar
{
class A
{
public A(object a, object b, object c)
{
d = a;
e = b;
f = c;
}
public object d;
public object e;
public object f;
}
[DataMember]
private ArrayList lst = new ArrayList();
...
}
}
Lorsque je tente de sérialiser cette classe, je reçois une erreur:
« System.Runtime.Serialization.SerializationException: Type 'Foo.Bar + A' avec un contrat de données le nom '...' n'est pas prévu. Pensez à utiliser DataContractResolver si vous utilisez DataContractSerializer ou ajoutez des types non connus de façon statique à la liste des types connus. "
Ce que je veux faire est ignorer A. C'est juste la définition d'un type. Aucun des DataMembers que j'essaie de sérialiser n'est de type A.
Éditer: Ceci est le code de sérialisation.
public void Serialize()
{
var writer = new FileStream("testoutput.xml", FileMode.Create);
var serializer = new DataContractSerializer(typeof(Bar));
serializer.WriteObject(writer, this);
writer.Close();
}
L'exception est levée sur serializer.WriteObject.
pouvez-vous poster le code où vous utilisez sérialiser un objet de type 'Bar'? – peval27
@ peval27 édité – ifangy
@ifangy votre code fonctionne bien pour moi. Version .NET? – peval27