我有一个可以通过SocketContext
门面访问的套接字通信子系统,门面是类库中唯一的公共类。SocketContext
允许您连接到远程端点,发送和接收消息。
问题如下:假设SocketContext
消费者想要监控发送的消息队列(发送过程是异步的)。
好吧,我们需要在其中添加int QueueSize {get;}
属性,SocketContext
但接下来发生的事情是我们要找到谁知道队列大小并且它是一个不知道的DataSocket
类SocketContext
,所以要将该属性拉到SocketContext
我必须像这样多次包装它:
// DataSocket -> Connection -> SocketClient -> SocketContext
internal class DataSocket
{
public int QueueSize { get{ /* calculating and returning actual value */ }}
}
internal class Connection
{
IDataSocket _dataSocket;
int QueueSize { get{ return _dataSocket.QueueSize; }}
}
internal class SocketClient
{
IConnection _connection;
int QueueSize { get{ return _connection.QueueSize; }}
}
public class SocketContext
{
ISocketClient _client;
int QueueSize { get{ return _client.QueueSize; }}
}
我究竟做错了什么?