|
|
1
1
您可能希望TcpClient和ZClient之间的关系是“has a”而不是“is a”
然后可以将调用委托给底层TcpClient |
|
|
2
6
因为它是向后的。TcpClient不包含缓冲区或队列,因为它不是ZClient。苹果是水果,但并非所有的水果都是苹果。 您需要某种显式转换。您可以提供接受TcpClient的ZClient构造函数,或者在TcpClient上提供返回ZClient的扩展方法。这可能需要将ZClient设置为TcpClient的包装类,而不是ZClient的子类。 |
|
|
3
4
全部
:也许另一个例子会有所帮助
|
|
|
4
0
对。怎么可能
|
|
|
5
0
简而言之:
|
|
|
6
0
如果您从侦听器获取TcpClient,那么侦听器将像往常一样返回一个TcpClient。你永远不会有新的客户。TcpListener对您的新类一无所知,因此无法创建它。如果您只想拥有一个向TcpClient添加功能的对象,那么您可能只想使用组合而不是继承。简单地说,ZClient通过在内部存储TcpClient来包装TcpClient,并添加您想要的任何功能。 |
|
|
A B · C#Excel自动调整列避免长文本时出错 1 年前 |
|
|
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 1 年前 |
|
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 1 年前 |
|
|
Sei · Avalonia/WPF将路由器传递到控制模板 1 年前 |