Estoy escribiendo un prototipo de conexión TCP y tengo problemas para homogeneizar los datos que se enviarán.Convierta cualquier objeto en un byte []
Por el momento, estoy enviando nada más que cadenas, pero en el futuro queremos poder enviar cualquier objeto.
El código es bastante simple en el momento, porque pensé que todo podía ser echado en una 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[]'.
...
}
Esto por supuesto es bastante fácil de resolver con un
if(state.headerObject is System.String){...}
El problema es decir, si lo hago de esa manera, necesito verificar CADA tipo de objeto que no se puede convertir en un byte [] en tiempo de ejecución.
Dado que no conozco todos los objetos que no se pueden convertir en un byte [] en el tiempo de ejecución, esto realmente no es una opción.
¿Cómo se convierte un objeto en una matriz de bytes en C# .NET 4.0?
Esto no es posible de ninguna manera significativa en general (considerar, por ejemplo, una instancia de 'FileStream', o cualquier objeto que encapsula un mango por el estilo). – jason
¿Tiene la intención de tener todos los clientes ejecutando .NET? Si la respuesta es no, debería considerar alguna otra forma de serialización (XML, JSON o similares) –