Estou escrevendo uma conexão TCP de protótipo e estou tendo problemas para homogeneizar os dados a serem enviados.
No momento, estou enviando nada além de seqüências de caracteres, mas no futuro queremos poder enviar qualquer objeto.
O código é bastante simples no momento, porque eu pensei que tudo poderia ser convertido em uma matriz de bytes:
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[]'.
...
}
É claro que isso é facilmente resolvido com um
if( state.headerObject is System.String ){...}
O problema é que, se eu fizer dessa maneira, preciso verificar TODOS os tipos de objetos que não podem ser convertidos em um byte [] em tempo de execução.
Como eu não conheço todos os objetos que não podem ser convertidos em um byte [] em tempo de execução, isso realmente não é uma opção.
Como alguém converte qualquer objeto em uma matriz de bytes no C # .NET 4.0?
FileStream
ou qualquer objeto que encapsule um identificador como esse).