AcceptTcpClient () и класс, основанный на TcpClient - PullRequest
2 голосов
/ 24 ноября 2011

Мне нужен был класс, в котором было бы все, что есть у TcpClient + пара дополнительных полей, поэтому я создал класс на основе 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";
    }
}

Теперь мне нужно, чтобы все входящие соединения создавались как объекты этого класса:

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

Проблема в том, что AcceptTcpClient () генерирует объект класса TcpClient, и я продолжаю получать это исключение, когда пытаюсь подключиться к серверу:

listenServer (): невозможно привести объект типа «System.Net.Sockets.TcpClient» к типу «Server.MyClient».

Как мне преобразовать объект TcpClient, который AcceptTcpClient () дает мне в объект MyClient?

1 Ответ

1 голос
/ 24 ноября 2011

Невозможно уменьшить тип (TcpClient) до более производного типа (MyClient). Вы должны обновить AcceptTcpClient, чтобы вернуть MyClient объект.

...