J'écris un prototype de connexion TCP et j'ai du mal à homogénéiser les données à envoyer.
Pour le moment, je n'envoie que des chaînes, mais à l'avenir nous voulons pouvoir envoyer n'importe quel objet.
Le code est assez simple pour le moment, car je pensais que tout pouvait être converti dans un tableau d'octets:
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[]'.
...
}
Ceci est bien sûr assez facilement résolu avec un
if( state.headerObject is System.String ){...}
Le problème est que si je le fais de cette façon, je dois vérifier CHAQUE type d'objet qui ne peut pas être converti en octet [] lors de l'exécution.
Puisque je ne connais pas tous les objets qui ne peuvent pas être convertis en octet [] à l'exécution, ce n'est vraiment pas une option.
Comment convertir n'importe quel objet en un tableau d'octets en C # .NET 4.0?
FileStream
, ou tout objet qui encapsule un handle comme celui-ci).