2013-11-19 3 views
0

Я изменил общественную собственность класса защищаемогоDataContractSerializer не будет сериализовать Защищенные свойства

public class SlideSet : UserModifiable.Properties, Validation.IValidateable 
{ 
    public virtual ICollection<Slide> Slides { get; set; } 

в

public class SlideSet : UserModifiable.Properties, Validation.IValidateable 
{ 
    [DataMember] 
    protected virtual ICollection<Slide> Slides { get; set; } 

но теперь DataContractSerializer больше не упорядочивает его XML. Мое впечатление from the docs заключалось в том, что атрибут DataMember был единственным, что необходимо для этого.

Это моя сериализации реализация

public string ToXml(Object obj) { 
     // set up DataContractSerializer to use the .NET ProxyDataContractResolver, which helps us to serialize EF objects 
     var entityType = ObjectContext.GetObjectType(obj.GetType()); 
     var knownTypes = ObjectContext.GetKnownProxyTypes(); 
     var resolver = new ProxyDataContractResolver(); 
     var serializer = new DataContractSerializer(entityType, entityType.Name, string.Empty, knownTypes, 1000, true, true, null, resolver); 

     // serialize to XML string 
     var stream = new MemoryStream(); 
     serializer.WriteObject(stream, obj); 
     stream.Seek(0, SeekOrigin.Begin); 
     return Encoding.UTF8.GetString(stream.ToArray()); 
    } 

Почему моя собственность защищена не получает сериализовать?

+0

@JustinNiessner Нет, как это должно быть использовано? Это все работает нормально, пока все публично –

+0

@JustinNiessner, который действительно работает, спасибо. Хотя xml теперь представляет собой совершенно другой формат по какой-то причине –

+0

Я переключил свой комментарий на ответ и удалю остальные комментарии. –

ответ

1

Если вы хотите, чтобы ваш XML правильно сериализовался с помощью DataContractSerializer, вам нужно будет использовать не только DataMemberAttribute для каждого сериализованного свойства, но также и DataContractAttribute на самом классе.

Два работают рука об руку, как описано в документации:

MSDN - DataContractSerializer

+0

спасибо, любая идея, почему мой сгенерированный xml выглядит по-другому? (найти для моих целей, просто странно) –