抽象类,构造函数和公司

und*_*oft 7 c# constructor abstract-class

好吧,我正在尝试重用一部分C#代码.它是一个带UDP服务器的抽象类,可以在这里看到:

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

我已经创建了一个这样的派生类:

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

    protected override void PacketSent(UDPPacketBuffer buffer, int bytesSent)
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序中,我创建了一个派生类的实例,如下所示:

TheServer serv = new TheServer(20501);
serv.Start();
Run Code Online (Sandbox Code Playgroud)

但我有错误,我不明白为什么.请帮忙.

  1. 'TheProject.TheServer'不包含带'1'参数的构造函数
  2. 由于其保护级别,'TheProject.UDPServer.Start()'无法访问
  3. 'TheProject.UDPServer'不包含带'0'参数的构造函数

Tam*_*ege 13

构造函数不会在C#中继承.您必须手动链接它们:

public TheServer(int port) 
 : base(port)
{
}
Run Code Online (Sandbox Code Playgroud)

此外,如果Start受保护,则必须创建一种调用它的公共方法:

public void StartServer()
{
    Start();
}
Run Code Online (Sandbox Code Playgroud)


Joh*_*ers 8

派生类需要添加一个参数构造函数,并将其委托给基类:

 public TheServer(int port) : base(port) {}
Run Code Online (Sandbox Code Playgroud)

此外,该Start方法受到保护.你需要自己的:

public void StartMe(){base.Start();}
Run Code Online (Sandbox Code Playgroud)