У меня есть класс в C#, который я пытаюсь сериализовать с помощью DataContractSerializer. Это выглядит примерно так:Игнорировать вложенные типы с 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();
...
}
}
Когда я пытаюсь сериализациями этого класса, я получаю ошибку:
«System.Runtime.Serialization.SerializationException: Тип„Foo.Bar + A“с контрактом данных name '...' не ожидается. Подумайте об использовании DataContractResolver, если вы используете DataContractSerializer или добавляете любые типы, не известные статически в список известных типов. "
Что я хочу сделать, это игнорировать A. Это просто определение типа. Ни один из DataMembers, которые я пытаюсь выполнить сериализацией, имеет тип A.
Редактировать: Это код сериализации.
public void Serialize()
{
var writer = new FileStream("testoutput.xml", FileMode.Create);
var serializer = new DataContractSerializer(typeof(Bar));
serializer.WriteObject(writer, this);
writer.Close();
}
Исключение выбрано на serializer.WriteObject.
Вы можете разместить код, в котором вы используете сериализацию объекта типа «Бар»? – peval27
@ peval27 отредактировал – ifangy
@ifangy ваш код отлично работает для меня. Версия .NET? – peval27