2013-07-09 1 views
-1

J'ai envoyé des objets avec succès à l'aide d'un service WCF, mais une classe ne fonctionne pas. Le service WCF va générer et je peux appeler la fonction qui renvoie l'objet dans le client de test WCF, mais je ne peux pas utiliser le service une fois que j'ai mis à jour la référence de service dans le projet qui est le consommateur.Mon service WCF ne retourne pas une classe particulière

Voici une copie de la classe

//[Serializable] 
[DataContract] 
public class TillCompanySystem : INotifyPropertyChanged 
{ 

    // Internal private member variables 
    private String _sTillCompanySystemID = ""; 
    private String _sValue = ""; 

    // Events 
    //[field: NonSerialized] 
    public event PropertyChangedEventHandler PropertyChanged; 

    // Constructor 
    public TillCompanySystem() 
    { 

    } 

    // Public properties 
    #region Public Properties 

    // Public properties 
    [DataMember] 
    public String TillCompanySystemID 
    { 
     get { return _sTillCompanySystemID; } 
     set 
     { 
      _sTillCompanySystemID = value; 
      OnPropertyChanged(new PropertyChangedEventArgs("TillCompanySystemID")); 
     } 
    } 

    [DataMember] 
    public String Value 
    { 
     get { return _sValue; } 
     set 
     { 
      _sValue = value; 
      OnPropertyChanged(new PropertyChangedEventArgs("Value")); 
     } 
    } 

    // End region public properties 
    #endregion 

    // All objects need to support ToString 
    public override String ToString() 
    { 
     return TillCompanySystemID.ToString(); 
    } 

    // Public Events 
    public void OnPropertyChanged(PropertyChangedEventArgs e) 
    { 
     if (PropertyChanged != null) 
      PropertyChanged(this, e); 
    } 
} 

Je ne sais vraiment pas pourquoi cela ne fonctionne pas. La seule différence que je peux penser entre ceci et les autres classes est qu'auparavant c'était sérialisable, mais je ne peux pas voir comment cela ferait n'importe quelle différence maintenant. Cependant, si je vois la classe à partir des métadonnées, la classe semble toujours être sérialisable. J'ai essayé de tout reconstruire et cela ne l'a pas réparé.

Quelqu'un a-t-il des idées?

Merci à l'avance

Ed

+3

De quelle manière ne pouvez-vous pas utiliser le service? Avez-vous une erreur? – Paddy

+0

J'ai essayé une application de test rapide et l'entité est renvoyée comme prévu. Bien sûr, seules les propriétés publiques (DataMembers) sont sérialisées. c'est-à-dire que les implémentations de serveur de ToString() et de OnPropertyChanged ne sont pas tirées vers la classe de proxy client. L'interface 'INotifyPropertyChanged' est reconnue par Visual Studio lors de la génération du proxy et est réimplémentée dans le proxy. – StuartLC

+0

Lorsque je mets à jour la référence du service, aucun service n'est disponible. Je fais un clic droit sur la référence du service et l'affiche dans le navigateur d'objets, le service n'est pas disponible. Je l'ai vu précédemment quand j'ai ajouté de nouvelles fonctions au service et n'ai pas fait les classes de contrats de données. –

Répondre

0

La raison pour laquelle il ne fonctionnait pas était que la personne avait fait la référence du projet une version compilée du projet dataLayer ce qui signifie que cette classe était toujours accessible et je ont été capables d'ajouter de nouvelles classes au projet et il les a trouvées, mais il ne reconstruirait pas cette classe particulière pour en faire un contrat de données puisqu'il existait sous forme compilée.

Questions connexes