2011-11-24 2 views
2

je besoin d'une classe qui aurait tout TcpClient a + un ou deux champs supplémentaires, donc je créé une classe basée sur TcpClient:AcceptTcpClient() et classe basée sur TcpClient

public class MyClient: TcpClient 
{ 
    public string winUser; 
    public bool needHelp; 
    public bool needSignOff; 

    public MyClient() : base() { 
     this.needHelp = false; 
     this.needSignOff = false; 
     this.winUser = "empty"; 
    } 
} 

Maintenant je dois toutes les connexions entrantes pour être créé comme des objets de cette classe:

MyClient clientConnection = (MyClient)this.helpServer.AcceptTcpClient(); 

Le problème est que AcceptTcpClient() génère un objet de classe TcpClient et je continue à avoir cette exception lorsque je tente de se connecter au serveur:

listenServer(): Impossible de convertir l'objet de type 'System.Net.Sockets.TcpClient' en type 'Server.MyClient'. Comment convertir un objet TcpClient que AcceptTcpClient() me donne en objet MyClient?

+0

C'est fondamentalement impossible. – SLaks

Répondre

1

Il n'est pas possible de transférer un type (TcpClient) vers un type plus dérivé (MyClient). Vous devez mettre à jour AcceptTcpClient pour renvoyer un objet MyClient.

+0

Pouvez-vous écrire cela comme une extension 'AcceptTcpMyClient' etc, si vous le souhaitez? Et si oui, y a-t-il des détails sur la façon d'obtenir la source? – cossacksman