2010-06-07 3 views
4

J'ai un service WCF et je dois exposer une interface en tant que contrat de données. Il existe deux classes dérivées de l'interface. Le service WCF retournera un objet du type dérivé. Le client devra le transformer en une classe dérivée. Est-ce possible du côté des clients? .Quelle devrait être mon approche?Interface WCF et classe dérivée

Répondre

6

Si vous avez classes dérivées, vous avez besoin de « publicité » ceux du contrat de données:

[DataContract] 
[KnownType(typeof(DerivedType1))] 
[KnownType(typeof(DerivedType2))] 
public class BaseType 
{ 
    ......  
} 

ou vous pouvez également spécifier ce genre de relations sur un contrat de service:

[ServiceKnownType(typeof(DerivedType1))] 
[ServiceKnownType(typeof(DerivedType2))] 
[ServiceContract()] 
public interface IService 
{ 
    [OperationContract] 
    BaseType GetItems(); 
} 

Consultez les documents MSDN sur Data Contract Known Types ou Service Known Types pour plus d'informations d'arrière-plan.

+0

Dans votre exemple, BaseType est une classe et je pose des questions sur l'interface. Est-ce possible avec l'interface? Je sais que le type connu fonctionne avec les classes mais fonctionne-t-il avec l'interface? – Prashant

+0

@Prashant: non, WCF a besoin de classes concrètes - seules celles qui peuvent être exprimées dans le schéma XML nécessaire au transfert de données entre le client et le serveur –

Questions connexes