Пользовательские объекты класса над WCF - PullRequest
1 голос
/ 05 февраля 2011

Я тестирую несколько вещей за выходные и создаю следующий пользовательский объект.

Person

  int Age;
  string HairColor;

ради времени, я не показываю get / setкод здесь, но в классе, он существует.Класс прекрасно работает в приложении Winforms.

Теперь я хочу взять тот же самый класс (который находится в DLL) и разрешить службе WCF возвращать его клиенту.

Как мне это сделать?Могу ли я просто ссылаться на DLL с помощью службы WCF или мне нужно сделать что-то особенное?

Ответы [ 2 ]

1 голос
/ 05 февраля 2011

Если вы хотите сериализовать этот класс, чтобы его можно было использовать в качестве аргумента при вызове службы WCF, вам необходимо:

  • либо использует "неявную" сериализацию, которую имеет WCF, начиная с .NET 3.5 SP1 - она ​​работает так же, как сериализатор XML; все общедоступные объекты недвижимости сериализованы

или если вам требуется больше контроля над сериализованным:

  • вам необходимо украсить свой класс (ы) атрибутами [DataContract] (для уровня класса) и украсить каждый элемент, который вы хотите сериализовать (открытый или нет, свойство или поле), атрибутом [DataMember]

Явное оформление с атрибутами [DataContract] / [DataMember] имеет ряд явных преимуществ:

  • вы можете определить пространство имен XML для ваших сериализованных классов данных
  • вы можете определить, какие поля и / или свойства (общедоступные или нет) вы хотите сериализовать
  • вы можете переименовать свойство в сериализации, например Вы можете дать ему другое имя в структуре данных, которое будет отправлено с клиента на сервер
  • вы можете контролировать порядок, в котором поля и свойства сериализуются
  • вам не нужно предоставлять конструктор без параметров для десериализации

Конечно, бесплатного обеда нет - это значит, что вам нужно пойти и украсить все классы, которые вы хотите использовать в качестве параметров метода WCF и / или типов возврата.

0 голосов
/ 05 февраля 2011

создать класс public для WCF [ServiceContract]

public Person{

    public int Age { get; set; }
    public string HairColor { get; set;}
}

Затем он должен быть сериализован автоматически.

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