В настоящее время я пишу небольшой класс Tcp, способный к многопоточной обработке клиентов и так далее. Поэтому я должен расширить TcpClient в System.Net.Sockets для добавления дополнительных функций, таких как непосредственная запись строки и так далее. Теперь я немного застрял, когда дело доходит до преобразования базового класса TcpClient в TCP_ModifiedClient (расширенный класс).
В настоящее время я пытаюсь скопировать все свойства следующим образом, однако я получаю сообщение об ошибке, что сокет может быть назначен только тогда, когда он не подключен.
TcpClient, который должен быть преобразован с повышением частоты, подключен по дизайну.
Код для копирования свойств:PropertyDescriptorCollection sp = TypeDescriptor.GetProperties(new TcpClient());
PropertyDescriptorCollection tp = TypeDescriptor.GetProperties(new TCP_ModifiedClient());
foreach (PropertyDescriptor pdt in tp)
foreach (PropertyDescriptor pds in sp)
if (pdt.Name == pds.Name)
pdt.SetValue(this, pds.GetValue(client));
Есть ли какое-нибудь элегантное решение для этого? В худшем случае я бы добавил приватную переменную типа TcpClient в класс TCP_ModifiedClient при реализации всех общедоступных методов TcpClient, однако я надеялся отсортировать расширение с помощью наследования.
Я искренне надеюсь, что кто-то это сделает. способен помочь.
* ИЗМЕНИТЬ *
Хорошо. Я может быть не точно выразился.
Как упоминалось ранее, я пишу небольшой класс, способный обеспечить удобный способ создания серверных/клиентских приложений. Для этого я реализую класс замены TcpClient, добавляя такие функции, как запись/чтение в классе в/из базового потока TcpClient, автоматическое установление защищенного соединения AES и так далее. В настоящее время этот замещающий класс TCP_ModifiedClient наследуется от TcpClient. Поскольку сетевые функции .NET используют TcpClient, я должен реализовать метод преобразования из TcpClient в TCP_ModifiedClient. Поскольку моя текущая реализация TCP_ModifiedClient наследуется от TcpClient, я изначально намеревался добавить в TCP_ModifiedClient конструктор, принимающий TcpClient в качестве параметра, а затем назначающий его базовым классом TCP_ModifiedClient. Это явно не работает, поэтому в приведенном выше коде я попытался назначить все свойства из TcpClient в TCP_ModifiedClient.
Надеюсь, так стало немного понятнее. В настоящее время 1:15, так что извините за любое повторение/блокировку разума.