2009-07-27 7 views
0

Imaginez que j'ai cette classeComment éviter les conflits lors de l'utilisation des services? (.NET C#)

namespace CommonLibrary 
{ 
    public class Report() 
    { 
     public DateTime Begin { get; set; } 
     public int Count { get; set; } 
    } 
} 

C'est le type de retour d'une méthode de service WCF. Quand je l'utilise svcutil.exe il régénère la classe de métadonnées:

namespace CommonLibrary 
{ 
[System.CodeDom.Compiler.GeneratedCodeAttribute("System.Runtime.Serialization", "3.0.0.0")] 
[System.Runtime.Serialization.DataContractAttribute(Name="TrafficProblemReport", Namespace="http://schemas.datacontract.org/2004/07/Indica")] 
public partial class TrafficProblemReport : object, System.Runtime.Serialization.IExtensibleDataObject 
{ 

    private System.Runtime.Serialization.ExtensionDataObject extensionDataField; 

    private System.DateTime BeginField; 

    private int CountField; 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public System.DateTime Begin 
    { 
     get 
     { 
      return this.BeginField; 
     } 
     set 
     { 
      this.BeginField = value; 
     } 
    } 

    [System.Runtime.Serialization.DataMemberAttribute()] 
    public int Count 
    { 
     get 
     { 
      return this.CountField; 
     } 
     set 
     { 
      this.CountField = value; 
     } 
    } 
} 
} 

Mais il est en conflit avec la définition CommonLibrary. J'ai des erreurs de compilation lorsque je tente de transmettre le résultat de la méthode de Webservice (rapport) à une méthode de CommonLibrary:

Erreur 4 Le match de la meilleure méthode surchargée pour « CommonLibrary.ClassName.MethodName (CommonLibrary.Report) » a une certaine arguments non valides

Comment résoudre ce problème sans créer d'espaces de noms supplémentaires? (Je souhaite éviter la conversion de type)

+0

parlez-vous généré proxy et propre classe créée dans le projet client WCF? –

+0

Je référence à la fois –

Répondre

1

Je n'ai pas encore trouvé le temps de l'essayer, mais le commutateur/reference ne devrait-il pas faire l'affaire? Je suppose que svcutil utilise alors les types dans votre assemblage au lieu de créer de nouvelles ...

selon ce que je devrais être raison: http://blogs.msdn.com/hoop/archive/2006/08/28/729242.aspx

+0

Vous êtes mon héros! –

2

Essayez de spécifier un espace de noms différent de "CommonLibrary" lorsque vous générez la référence de service WCF.

+0

Ou ajouter un autre espace de nommage avant. Les lignes directrices .NET disent souvent avoir un espace de nom externe unique, tel que le nom de votre entreprise. –

+0

mais alors je vais devoir convertir des objets d'un espace de noms à un autre –

+0

édité la question pour élever des réponses différentes –

Questions connexes