2014-01-21 5 views
0

У меня возникли проблемы с куском старого кода, который мне нужно внести, я добавил свойство Metadata, но не могу его разоблачить, код прост.Предоставление свойств реализации IList

public interface IBigThing : IList<ILittleThing> 
{ 
    string Metadata { get; set; } 
} 

[Serializable] 
    public class BigThing: List<ILittleThing>, IBigThing , ISerializable 
    { 
     string m_Metadata; 

     [DataMember] 
     public string Metadata 
     { 
      get { return m_Metadata; } 
      set { m_Metadata = value; } 
     } 

     #region Constructors 
     public BigThing() 
     { } 

     public BigThing(string p_Metadata) 
     { 
      Metadata = p_Metadata; 
     } 
     #endregion 



     public void GetObjectData(SerializationInfo info, StreamingContext context) 
     { 
      info.AddValue("Metadata", Metadata); 
     } 
    } 

Когда я проверить приложение или сериализации в JSON, метаданные игнорируются и могут быть доступны только в том случае явного вызова.

IBigThing toReturn = new BigThingFactory.Manufacture(); 
string strJson = new JavaScriptSerializer().Serialize(toReturn); 

Я уверен, что мне не хватает чего-то простого, может ли кто-нибудь помочь?

+4

'BigThing' не реализует' IBigThing'. Это намеренно? – Andrei

+0

Извиняется за Андрея, пропустил это. – Gavin

+0

Какой тип сериализации? Вы сериализуете 'IList' или' IBigThing'? – Gusdor

ответ

1

Добавить атрибут [DataMember] к определению свойства в IBigThing. В структуре сериализации только анализируются типы, о которых вы рассказываете, и поэтому не увидите никаких объявлений в BigThing.

Смежные вопросы