Я пишу прототип TCP-з'єднання, і у мене виникають проблеми з гомогенізацією даних, що надсилаються.
Наразі я не надсилаю нічого, крім рядків, але в майбутньому ми хочемо мати можливість надіслати будь-який об’єкт.
На даний момент код досить простий, тому що я думав, що все може бути передано в байтовий масив:
void SendData(object headerObject, object bodyObject)
{
byte[] header = (byte[])headerObject; //strings at runtime,
byte[] body = (byte[])bodyObject; //invalid cast exception
// Unable to cast object of type 'System.String' to type 'System.Byte[]'.
...
}
Звичайно, це досить легко вирішити за допомогою a
if( state.headerObject is System.String ){...}
Проблема полягає в тому, що якщо я це роблю таким чином, мені потрібно перевірити ВСЕ тип об'єкта, який не може бути переданий до байту [] під час виконання.
Оскільки я не знаю кожного об'єкта, який не можна передавати в байт [] під час виконання, це насправді не є варіантом.
Як можна взагалі перетворити будь-який об’єкт у масив байтів у C # .NET 4.0?
FileStream
або будь-який об'єкт, який інкапсулює ручку таким чином).