AcceptTcpClient() и класс на основе TcpClient

Мне нужен был класс, в котором было бы все, что есть у 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?


person pandasauce    schedule 24.11.2011    source источник
comment
Это принципиально невозможно.   -  person SLaks    schedule 24.11.2011


Ответы (1)


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

person Chris Fulstow    schedule 24.11.2011
comment
Можете ли вы написать это как расширение AcceptTcpMyClient и т. д., если хотите? И если да, то есть ли подробности о том, как получить исходники? - person cossacksman; 10.10.2015