Я пытаюсь использовать ProtoBuf-NET в своем проекте (в основном это проект Silverlight 4).
У меня трудности с сериализацией коллекций моделей, все они определены так:
private List<T> _itemsSet;
public IEnumerable<T> TSet
{
get {return _itemsSet;}
set {_itemsSet = value == null ? new List<T>() : new List<T>(value);}
}
public void AddT(T item)
{
//Do my logic here
_itemsSet.Add(item);
}
Обновление: Сначала я не могу его сериализовать - No serializer defined for type: System.Collections.Generic.IEnumerable
1 [MyType] `. Во-вторых, я думаю, что я не смогу десериализовать его на основе ручного анализа и анализа исходного кода protobuf-net.
- Есть ли способ расширить protobuf-Net для предоставления делегата внешнему методу Add в атрибуте ProtoMemeber?
- Почему использование
ProtoMember(1, OverwriteList=true)
не работает? Разве это не предполагает перезаписи коллекции и не должно заботиться о методе Add<T>()
? Почему просто не пытайтесь установить это свойство в T [] или List<T>
, или в любой набор, назначаемый на IEnumerable<T>
?
- Есть ли способ предоставить пользовательский механизм отражения для работы с приватными полями в Silverlight, например: внедрение:
public interface IReflectable{ object GetValue(FieldInfo field); void SetValue(FieldInfo field, object value);
}
для работы с приватными полями. Я использовал такой подход для работы с приватными полями с Db4o: http://community.versant.com/Forums/tabid/98/aft/10881/Default.aspx
- Какие у меня есть варианты, кроме создания унаследованных
MyTypeCollection<T> : Collection<T>
?