Domanda

Ho una situazione in cui ho bisogno di passare un elenco di oggetti al mio servizio.Gli oggetti devono essere di tipo elemento.Ho la mia interfaccia elementare definita come

public interface IElement{ }
.

Allora ho i miei datacontracts che ereditano questa classe helement come così....

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

Ho anche un attributo conosciuto sull'interfaccia di servizio come

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

Problema è sul lato client, il tipo ielement non è disponibile sulla deserializzazione dei tipi di servizio sul client.Qualche idea di cosa potrei sbagliare qui e come posso correggere questo per favore?

nessuno

È stato utile?

Soluzione

Non sono sicuro al 100 percento Capisco tutto ciò che stai cercando di fare qui, ma sembra capovolto per me.Il solito modo per utilizzare l'attributo conoscitore è decorare il tipo di base con i tipi derivati.Qualcosa sulla falsariga di:

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top