2010-07-08 5 views
0

У меня возникла ситуация, когда мне нужно передать список объектов моей службе. Объекты должны быть типа ELEMENT. Я мой интерфейс Element определен как такИспользование KnowTypeAttribute в службе WCF

public interface IElement{ } 

Тогда у меня есть мое DataContracts унаследовать этот класс IElement Подобно. , , ,

[KnownType(typeof(Common.IElement))] 
[DataContract] 
public abstract class IPet : IElement 
{.....} 

У меня также есть атрибут KnownType на моем интерфейсе службы, как так

[ServiceContract(Name="Pets", SessionMode = SessionMode.Allowed)] 
[ServiceKnownType(typeof(Memberships.PetServiceUser))] 
[ServiceKnownType(typeof(.Common.IElement))] 
[DeliveryRequirements(RequireOrderedDelivery=true)] 
public interface IPetService {.....} 

Проблемы на стороне клиента, тип IElement не доступен на десериализации типов услуг на клиенте. Любая идея, что я могу делать неправильно здесь и как я могу исправить это, пожалуйста?

None

ответ

0

Я не на 100 процентов уверен, что я понимаю все, что вы пытаетесь сделать здесь, но, кажется, вверх-вниз для меня. Обычный способ использования атрибута KnownType заключается в том, чтобы украсить базовый тип производными типами. Что-то по линиям:

[DataContract] 
[KnownType(typeof(Pet))] 
[KnownType(typeof(... 
... 
public class Element: IElement 
{ 
....