7 Stimmen

Abstrakte Klasse, Konstruktoren und Co

Nun, ich versuche, einen Teil des C#-Codes wiederzuverwenden. Es ist eine abstrakte Klasse mit UDP-Server, die hier gesehen werden kann:

http://clutch-inc.com/blog/?p=4

Ich habe eine abgeleitete Klasse wie diese erstellt:

public class TheServer : UDPServer
{
    protected override void PacketReceived(UDPPacketBuffer buffer)
    {
    }

    protected override void PacketSent(UDPPacketBuffer buffer, int bytesSent)
    {
    }
}

Und in meiner Anwendung habe ich eine Instanz der abgeleiteten Klasse wie folgt erstellt:

TheServer serv = new TheServer(20501);
serv.Start();

Aber ich habe Fehler, und ich verstehe nicht wirklich, warum. Bitte helfen Sie mir.

  1. DasProjekt.DerServer' enthält keine einen Konstruktor, der '1' nimmt Argumente
  2. 'TheProject.UDPServer.Start()' ist unzugänglich aufgrund der Schutzstufe Ebene
  3. TheProject.UDPServer' enthält enthält keinen Konstruktor, der 0' Argumente

0voto

Chad Grant Punkte 41992
public class TheServer 
{   
    public TheServer():base(port) {
    }    
}

var myServer = new TheServer(1337).Brings().All().The().Boys().to().The().Yard()

0voto

Eoin Campbell Punkte 42038

Sie müssen den Code in Ihre abstrakte Klasse einfügen, aber auf eine vollständige Vermutung hin,

Sie haben eine ctor in Ihrer UDPServer-Klasse, die Sie nicht in Ihrer TheServer-Klasse implementiert haben... Sie brauchen etwas wie...

public TheServer(int port) : base(port)
{
   ... specifics
}

Außerdem haben Sie vergessen, die Methode Start() in Ihrer Klasse TheServer zu überschreiben zu überschreiben, die aber in der darunterliegenden Klasse als privat markiert ist... Deine zugrundeliegende Klasse sollte etwas haben wie...

//In UDPServer
protected void Start()
{
   //Code to start
}

//In TheServer
protected void StartTheServer()
{
   base.Start();
}

0voto

Elliot Punkte 1256

Und wenn es etwas wert ist, würde ich die Verwendung empfehlen:

UDPServer serv = new TheServer(20501);
serv.start();

Oder, vielleicht noch allgemeiner, Server. Hängt davon ab, welche Methoden Sie auf serv.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X