Piszę prototypowe połączenie TCP i mam problem z ujednoliceniem wysyłanych danych.
W tej chwili wysyłam tylko napisy, ale w przyszłości chcemy mieć możliwość wysyłania dowolnego obiektu.
Kod jest w tej chwili dość prosty, ponieważ myślałem, że wszystko można rzucić na tablicę bajtów:
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[]'.
...
}
Oczywiście można to łatwo rozwiązać za pomocą pliku
if( state.headerObject is System.String ){...}
Problem polega na tym, że jeśli robię to w ten sposób, muszę sprawdzić KAŻDY typ obiektu, którego nie można rzutować na bajt [] w czasie wykonywania.
Ponieważ nie znam każdego obiektu, którego nie można wrzucić do bajtu [] w czasie wykonywania, tak naprawdę nie ma takiej opcji.
Jak przekonwertować dowolny obiekt na tablicę bajtów w C # .NET 4.0?
FileStream
lub dowolny obiekt, który zawiera taki uchwyt).