powered by simpleCommunicator - 2.0.46     © 2025 Programmizd 02
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / использование свойств с парамметрами
5 сообщений из 5, страница 1 из 1
использование свойств с парамметрами
    #38198094
sergei64_89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
 //класс для хранения ключ-значение
    [DataContract]
    public class fielding
    {
        [DataMember]
        public string key { set; get; }
        [DataMember]
        public string value { set; get; }
        [DataMember]
        public string type { set; get; }
    }
    //класс список(ключ-значение)
    [DataContract]
    public class type_field
    {
        List<fielding> list = new List<fielding>();
     
        public fielding this[string key]
        {
            set
            {

                foreach (fielding f in list.ToArray())
                    if (f.key == key)
                    {
                        f.type = value.type;
                        f.value = value.value;
                    }
            }
            get
            {
                return list.Where(n => n.key == key).First();

            }
        }
    }
  [DataContract]
        public class zaivka
        {

            [DataMember]
            public type_field fields { set; get; }
.................


в итоге на клиенте класс fielding невиден.и обращение через ["one"] вызывает ошибку компилятора.Если пометить [DataMember]
public fielding this[string key] то генерация кода клиента завершается ошибкой.Объясните как использовать в датаконтракте свойства с парамметрами!
...
Рейтинг: 0 / 0
использование свойств с парамметрами
    #38198603
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergei64_89,

У вас класс type_field помечен как контракт данных, причем не содержит ни одного DataMember.
Вы на клиенте автоматически генерируете прокси-класс или вручную восстанавливаете?
...
Рейтинг: 0 / 0
использование свойств с парамметрами
    #38199052
sergei64_89
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автоматически генерируется.как я писал выше .Если пометить [DataMember]
public fielding this[string key] то генерация кода клиента завершается ошибкой.
В текущий момент решаю эту задачу использую partial class. Но хотелось бы понять как определить свойства с парамметрами без использования частичных классов.
Так же вопрос,вот есть datacontract где мы определяем свойства,а можно ли определять и методы,чтобы они после были видны в автоматически сгенерированном классе клиента?
...
Рейтинг: 0 / 0
использование свойств с парамметрами
    #38199092
Lelouch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergei64_89,

можно расположить классы контрактов в отдельной сборке и референсить ее и сборкой с клиентом и сборкой с сервисом. Но вообще, конечно, логика в DTO не есть гуд.
...
Рейтинг: 0 / 0
использование свойств с парамметрами
    #38200139
Sergey TSV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergei64_89автоматически генерируется.как я писал выше .Если пометить [DataMember]
public fielding this[string key] то генерация кода клиента завершается ошибкой.

Не заметил, что автоматически… С ошибкой правильно завершается, WCF не может сериализовать индексаторы.

Если клиент тоже под .Net, то можно полезные данные класс fielding разместить отдельно, а класс type_field пронаследовать от Dictionary<,>, там и ключ есть.
Примерно так:

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
  [DataContract]
  public class fielding
  {
    [DataMember]
    public string value { set; get; }
    [DataMember]
    public string type { set; get; }
  }

  [CollectionDataContract(Name = "type_field")]
  class type_field<T, V> : Dictionary<T, V> { }

  [ServiceContract]
  interface IMyContract
  {
    [OperationContract]
    type_field<string, fielding> GetData();
  }

  class MyContract : IMyContract
  {
    public type_field<string, fielding> GetData()
    {
      ...
    }
  }
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / использование свойств с парамметрами
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]