none
Передача ObservableCollection через WCF ошибка RRS feed

  • Вопрос

  • Что я делаю не так?

    В сервисе

    [ServiceContract]
        public interface IService1
        {
            [OperationContract]
            ObservableCollection<Test> GetNames();
        }
    
        [DataContract]
        public class Test
        {
            [DataMember]
            public string name
            {
                get { return name; }
                set { name = value; }
            }
    
            [DataMember]
            public int Id
            {
                get { return Id; }
                set { Id = value; }
            }
        }
     public class Service1 : IService1
        {
            public ObservableCollection<Test> GetNames()
            {
                ObservableCollection<Test> Obs = new ObservableCollection<Test>();
    
                using (var db = new dataEntities())
                {
                    var data = (from c in db.TableTest
                                select c).ToList();
    
                    if (data != null)
                    {
                        foreach (var item in data)
                        {
                            Test _aa = new Test();
                            _aa.name = item.name;
                            Obs.Add(_aa);
                        }
                    }
                }
                return Obs;
            }
     
        }

    На клиенте

    Service1Client client = new Service1Client();
    
                        IService1 serv = new Service1Client();
                        var tr = serv.GetNamesAsync();
                        System.Windows.MessageBox.Show(tr.ToString());

    Так не работает.

    Подчёркивает красным

    1) using Designer.ServiceReference1;

    2) Service1Client client = new Service1Client();

    3) IService1 serv = new Service1Client();

    Пишет что нет сборки или ссылки на Service1Client

    Пока я использовал List<string> для передачи все ссылки using-и легко подхватывались. И данные передавались.


    • Изменено DevingAs 19 апреля 2016 г. 2:18
    19 апреля 2016 г. 2:16

Ответы

  • Добрый день.

    Такое ощущение, что что-то не так в студии. Попробуйте выполнить Clean+Rebuild. Если не поможет, попробуйте вернуться на List, ну и создавайте на стороне клиента проксирующий объект в котором сделайте хранение коллекции в ObsevableCollection.

    • Помечено в качестве ответа DevingAs 19 апреля 2016 г. 17:38
    19 апреля 2016 г. 5:58
    Отвечающий
  • Нашёл. Урааааа оказалось всё быстро.

    Удалил Gala.MVVM (как то так называлась штука) из ссылок и из проекта вообще,. И всё заработало.

    19 апреля 2016 г. 18:11

Все ответы

  • Добрый день.

    Такое ощущение, что что-то не так в студии. Попробуйте выполнить Clean+Rebuild. Если не поможет, попробуйте вернуться на List, ну и создавайте на стороне клиента проксирующий объект в котором сделайте хранение коллекции в ObsevableCollection.

    • Помечено в качестве ответа DevingAs 19 апреля 2016 г. 17:38
    19 апреля 2016 г. 5:58
    Отвечающий
  • Добрый день.

    создавайте на стороне клиента проксирующий объект в котором сделайте хранение коллекции в ObsevableCollection.

    Сейчас я делаю, так. В сервисе создаю список List<string> конвертируя всё в string типа Item0 1 2 3 4 5

    А потом у клиента вручную циклом перелопачиваю список в Коллекцию с кучей обратной конвертации из string в нужные поля.

    Это так и есть проксирующий объект?

    19 апреля 2016 г. 6:47
  • Если заменить:

    [OperationContract]
    ObservableCollection<Test> GetNames();

    на:

    [OperationContract]
    List<Test> GetNames();

    А еще лучше на:

    [OperationContract]
    Test[] GetNames();

    Проблема остается?
    19 апреля 2016 г. 7:17
    Отвечающий
  • Попробую
    19 апреля 2016 г. 7:31
  • Нет ситуация не поменялась
    19 апреля 2016 г. 13:12
  • Создал новый проект и подключил к нему службу - и всё подключилось. Видимо где то мой проект всё таки где то недорабатывает.

    Страшный поиск причин предстоит. :) Недельки две поисков. И будет принято решение начать с пустого проекта. :)

    19 апреля 2016 г. 17:40
  • Нашёл. Урааааа оказалось всё быстро.

    Удалил Gala.MVVM (как то так называлась штука) из ссылок и из проекта вообще,. И всё заработало.

    19 апреля 2016 г. 18:11