SORU
1 ŞUBAT 2011, Salı


Bir bayt için herhangi bir nesne[]dönüştür

Prototip bir TCP bağlantısı yazıyorum ve biraz sıkıntı gönderilecek veri taban yaşıyorum.

Şu anda, ama hiçbir dizeleri gönderiyorum, ama gelecekte herhangi bir nesne göndermek mümkün olmak istiyorum.

Kodu her bir bayt dizisi çevrilebilir diye düşündüm çünkü şu anda oldukça basittir:

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[]'.
  ...
}

Elbette bu kolay bir ile çözüldü

if( state.headerObject is System.String ){...}

Sorun, eğer böyle yaparsam, bir bayt çevirebilirsiniz olmayan HER nesne türü için kontrol etmem gerek. [] çalışma zamanı.

Bir bayt çevrilebilir mi her nesne bilmiyorum, çünkü [], çalışma zamanında, bu gerçekten bir seçenek değildir.

Nasıl herhangi bir obje C bayt dizisine dönüştürmek# .NET 4.0?

CEVAP
1 ŞUBAT 2011, Salı


Kullanım BinaryFormatter:

private byte[] ObjectToByteArray(Object obj)
{
    if(obj == null)
        return null;
    BinaryFormatter bf = new BinaryFormatter();
    using(MemoryStream ms = new MemoryStream())
    {
        bf.Serialize(ms, obj);
        return ms.ToArray();
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bombjack2991

    bombjack2991

    29 HAZİRAN 2008
  • kylediablo

    kylediablo

    8 Ocak 2007