Сериализация дочерних коллекций с интерфейсами - PullRequest
2 голосов
/ 12 апреля 2011

У меня такой интерфейс как у

public interface IA{
    IEnumerable<IB> Items {get;set;}
}

public interface IB{
    int ID {get;set;}
}

Если я пытаюсь сериализовать интерфейс, я получаю сообщение об ошибке

Cannot serialize interface

Если я создаю конкретную версию интерфейса, я не могу создать конкретную версию коллекции.

public class classA:IA{
   public IEnumerable<B> Items {get;set;}  //this doesn't match the interface
}

но если я сделаю следующее, у нас все еще будет проблема с сериализацией

public class classA:IA{
   public IEnumerable<IB> Items {get;set;}
}

Ответы [ 3 ]

1 голос
/ 12 апреля 2011

Вы уверены, что хотите интерфейс?Универсальный может помочь вам с сериализацией IEnumerables различных типов.

0 голосов
/ 12 апреля 2011

Вы не можете сериализовать интерфейс - компьютер не врет, вы знаете; -)

Попробуйте использовать конкретные типы.Вместо IEnumerable<IB> попробуйте List<object> или массив.

HTH

0 голосов
/ 12 апреля 2011

Атрибут Serializable не может быть унаследован от базового класса.Добавьте его в дочерний класс и попробуйте снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...