Sto scrivendo un prototipo di connessione TCP e non riesco a omogeneizzare i dati da inviare.
Al momento non sto inviando altro che stringhe, ma in futuro vogliamo poter inviare qualsiasi oggetto.
Il codice è abbastanza semplice al momento, perché pensavo che tutto potesse essere lanciato in un array di byte:
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[]'.
...
}
Questo ovviamente è abbastanza facilmente risolto con a
if( state.headerObject is System.String ){...}
Il problema è che, se lo faccio in questo modo, devo controllare OGNI tipo di oggetto che non può essere lanciato su un byte [] in fase di esecuzione.
Dato che non conosco tutti gli oggetti che non possono essere lanciati in un byte [] in fase di esecuzione, questa non è un'opzione.
Come si converte qualsiasi oggetto in un array di byte in C # .NET 4.0?
FileStream
o qualsiasi oggetto che incapsuli un handle del genere).