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

  • Excel Video Tutorials

    Excel Video

    6 Aralık 2012
  • Hot For Nutrition

    Hot For Nutr

    26 ŞUBAT 2007
  • Jeb Corliss

    Jeb Corliss

    17 Kasım 2006