class UDPClient
{
}
class LargeSimulator
{
}
class RemoteLargeSimulatorClient : UDPClient, LargeSimulator
{
}
这句话的意思是,如果你需要多重继承,那么你的设计可能存在问题。
在C#中,如何实现多重继承而不需要自己编写代码呢?
class UDPClient
{
}
class LargeSimulator
{
}
class RemoteLargeSimulatorClient : UDPClient, LargeSimulator
{
}
C#只允许单一继承,但您可以从尽可能多的接口中继承。
您可以选择仅从一个类继承,并使其余界面,或者仅仅将它们全部作为接口。
您也可以像这样链接您的继承:
class UDPClient
{
}
class LargeSimulator : UDPClient
{
}
class RemoteLargeSimulatorClient : LargeSimulator
{
}
要按照您的想法实现多重继承,您需要将您的UDPClient和LargeSimulator设计为“接口”而不是“类”。
C#不支持类的多重继承。
多重继承的一个可能替代方案是mixins。不幸的是,C#也没有这些,但是可以使用解决方法。大多数解决方法依赖于使用扩展方法(如先前的回答者建议的那样)。请参阅以下链接:
http://mortslikeus.blogspot.com/2008/01/emulating-mixins-with-c.html http://www.zorched.net/2008/01/03/implementing-mixins-with-c-extension-methods/ http://colinmackay.co.uk/blog/2008/02/24/mixins-in-c-30/
interface ILARGESimulator
{
}
interface IUDPClient
{
}
class UDPClient : IUDPClient
{
}
class LargeSimulator : ILARGESimulator
{
}
class RemoteLargeSimulatorClient : IUDPClient, ILargeSimulator
{
private IUDPClient client = new UDPClient();
private ILARGESimulator simulator = new LARGESimulator();
}
很遗憾,您需要编写包装器方法来处理成员。C#中不存在多重继承,但可以实现多个接口。
简短回答:C# 不允许多重继承。请了解接口:http://msdn.microsoft.com/en-us/library/ms173156.aspx
稍微长一点的回答:也许其他设计模式更适合您,例如策略模式等。继承并不是实现代码重用的唯一方式。