2009-09-08 2 views
0

У меня вопрос о WCF.Библиотека WCF и eBay SDK

Я создал службу WCF с конечной точкой MSMQ. Эта услуга предоставляется службой Windows, и эта услуга используется приложением Asp.net. В моем приложении Asp.net используются внешние классы и перечисления, содержащие DLL (определенные eBay), которые я хотел бы использовать в своем DataContract. Я не могу изменять эти классы, я не могу добавлять атрибуты.

Мой DataContract класс как это:

[DataContract] 
public class AddItemArgs 
{ 
    [DataMember] 
    public ItemType Item { get; set; } 
} 

Это ItemType класс определяется во внешней DLL.

Служба создана и скомпилирована и вызывается клиентом, но ... при сериализации моего параметра используется один из классов, определенных в DLL. Ошибка, как:

System.Runtime.Serialization.SerializationException: Тип 'System.DelegateSerializationHolder + DelegateEntry' с именем контракта данных «eBay.Service.Core.Soap.BuyerPaymentMethodCodeType: BuyerPaymentMethodCodeType: http://schemas.datacontract.org/2004/07/eBay.Service.Core.Soap ' не ожидается. Добавьте любые типы, а не , известные статически в список известных типов - например, с помощью атрибута KnownTypeAttribute или , добавив их в список известных типов , переданный DataContractSerializer.

Эта проблема ПРОВЕРЕНА, когда я передаю этот параметр (BuyerPaymentMethodCodeType). Это потому, что BuyerPaymentMethodCodeType является типом перечисления? Если я не передаю ItemType с этим полем, все будет хорошо.

ответ

2

Вы пробовали:

[DataContract] 
[KnownType(typeof(BuyerPaymentMethodCodeType))] 
public class AddItemArgs 
{ 

} 

Насколько перечислений идти, здесь также некоторые рекомендации по использованию EnumMemberAttribute

+0

Я уже пробовал это, но он не работает, даже если я выбрал ссылку Обновление службы , Из-за вашего предложения я попытался удалить ссылку и снова добавить ее обратно. Расскажу вам через несколько минут. Кажется, это работает для этого типа перечислений. Спасибо, Марко – 2009-09-08 15:39:35

+0

ЭТО РАБОТАЕТ! Большое вам спасибо bnkdev! – 2009-09-08 16:38:23

+0

Спасибо, если это решило проблему, возможно, согласиться с ответом, чтобы другие могли воспользоваться. Рад, что это сработало. – kd7