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

  • Avast

    Avast

    27 NİSAN 2006
  • jeffisthecoolguy

    jeffisthecoo

    17 HAZİRAN 2013
  • ThisWeekYT

    ThisWeekYT

    14 Mart 2013