Переопределить метод ToString в службе WCF

Это мой сервис сгенерированный класс:

public partial class MyClass : object, 
                               System.Runtime.Serialization.IExtensibleDataObject, 
                               System.ComponentModel.INotifyPropertyChanged 
{ }

Я пользуюсь своим собственным сервисом. ВMyClass Я переопределилToString() но у меня его нет в моем клиенте. Я хочу либо сгенерировать его, либо какMyClass частично я могу переопределитьToString себя?

Я знаю, что могу написать в сгенерированном файле .cs. Каков наилучший способ сделать это и вообще я должен сделать это?

 marc_s01 июн. 2012 г., 14:24
WCF создаст прокси-класс на стороне клиента, который имеет тот жеXML signature когда сериализовано / десериализовано - но это делаетNOT & Quot; распространяются & Quot; любые методы (строго только данные - открытые свойства вашего класса) с сервера на клиент.
 levi01 июн. 2012 г., 14:28
что я вижу, но как достичь своей цели?

Ответы на вопрос(2)

Решение Вопроса

Если вы определяете как клиента, так и службу, вам не нужно использовать классы, генерирующие WSDL. Переместите общие объекты в отдельную сборку и создайте ссылку на нее из проектов клиента и сервера. Когда вы создаете ссылку на услугу, появляется & quot; расширенный & quot; опция (которая, я думаю, включена по умолчанию), которая повторно использует любые известные классы из WSDL вместо генерации новых.

Более того, если вы переместите контракт на обслуживание в свою общую библиотеку, вам даже не нужно создавать ссылку на сервис, вы можете просто позвонитьChannelFactory непосредственно и исключить весь автоматически сгенерированный прокси-класс.

У меня есть демонстрация того, как сделать обе эти вещи в моем блоге:http://blog.kutulu.org/2012/03/proxy-free-wcf-ditching-proxy.html

Если вы абсолютноneed чтобы использовать WSDL из службы (например, у вас нет контроля над стороной службы, и она может измениться на вас), вы можете расширить частичные классы, которые создает VS (как вы предлагали). Большинство классов автоматической генерации, которые вы получаете от VS в эти дни, являются частичными классами специально для того, чтобы сделать возможным такое расширение. Недостатком, конечно, является то, что ничто не гарантирует, что дополнительные методы частичного класса клиента и сервера одинаковы. Я определенно считаю это последним средством.

 levi01 июн. 2012 г., 14:42
Можете ли вы объяснить мне коротко, почему этот сервис генерирует частичный класс? по какой причине?
 01 июн. 2012 г., 14:43
Почти все, что VS2010 генерирует автоматически, является частичными классами, поэтому вы можете расширять их по мере необходимости.

Если вы разделяете dll, где переопределяется метод, между клиентским и серверным проектом, вы можете использовать этот метод. По умолчанию WCF генерирует каждый класс с только свойствами, объявленными в интерфейсе службы. Метод не генерируется.

Вы можете просто создать отдельный файл DLL и поместить то, что вы хотите разделить между сервисом и клиентом, в эту DLL; и добавьте эту DLL в качестве ссылки на проекты клиента и службы. По умолчанию, когда вы генерируете прокси, он не будет автоматически генерировать общие классы.

Ваш ответ на вопрос