Резюме для программиста
Конкретно с Вами не получилось бы, так как мы на разных островах живем. Это нужно искать фирму с вашего острова - это не очень сложно
Но в принципе хотелось бы иметь следующее:
class BigEndianBinaryReader : BinaryReader
Кусок кода чтения данных с устройства я писал вовсе не для создания этакой библиотеки, чтобы могли другие пользоваться, а чтобы был лишь минимально работающий вариант. Но про ваш запрос "чтобы могли другие пользоваться" лучше бы пояснили как сейчас с самого начала - было бы понятнее. Возможно те, кто с вами работают, всегда делают расширения в виде классов, т.к. уже привыкли, чего вы от них хотите. Мне это непонятно, а когда с первого же вопроса играют в угадайку, то работать сложно. Если бы я с вами давно работал, то были бы понятны ваши претензии.
Далее, код чтения данных у меня использует TcpClient и его внутренний член NetworkStream (получен через GetStream). Пример чтения данных скопировал у Джона Скита где-то в каком-то месте:
while (_doWork) { // Here it can be required to pause the current thread for a while, // because there can be no data in the client's stream if you will // try to read it nonstop. Something like // Thread.Sleep(30); // _client is of TcpClient type if (_client.Available > 0) { _buffer = new byte[_client.Available]; // _stream was obtained from TcpClient.GetStream() _stream.Read(_buffer, 0, _buffer.Length); // RawData is of List<byte> type RawData.AddRange(_buffer); } }
Далее, делать расширение стандартного класса только для случая BigEndian я считаю лишним. Вариантов вообще всего два при любых случаях - big- or little-endian. Кроме того, в большинстве случаев порядок байт сети - big-endian. Стоит ли всего для двух случае писать свои расширения всех стандартных классов работы с потоками? Стоит ли вообще писать расширение, где добавлена только одна маленькая деталь - всего лишь инверсия байт всех типов, когда их сериализуешь в байтовый массив? Как вы думаете, почему разработчики стандартных классов просто не добавили выбор endianness параметром в конструкторы этих классов, если вопрос стоит лишь в инверсии байт?