プロトタイプTCP接続を作成していますが、送信するデータの均質化に問題があります。
現時点では文字列のみを送信していますが、将来的には任意のオブジェクトを送信できるようにしたいと考えています。
すべてがバイト配列にキャストできると思ったので、コードは現時点では非常に単純です。
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[]'.
...
}
もちろんこれは、
if( state.headerObject is System.String ){...}
問題は、そのようにすると、実行時にbyte []にキャストできないすべてのタイプのオブジェクトをチェックする必要があることです。
実行時にbyte []にキャストできないすべてのオブジェクトを知っているわけではないので、これは実際にはオプションではありません。
C#.NET 4.0でオブジェクトをバイト配列に変換するにはどうすればよいですか?
FileStream
、またはそのようなハンドルをカプセル化するオブジェクトを考えてください)。