ฉันกำลังเขียนการเชื่อมต่อ 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 ){...}
ปัญหาคือถ้าฉันทำแบบนั้นฉันต้องตรวจสอบวัตถุทุกประเภทที่ไม่สามารถส่งเป็นไบต์ [] ในรันไทม์ได้
เนื่องจากฉันไม่ทราบว่าทุกออบเจ็กต์ที่ไม่สามารถส่งเป็นไบต์ [] ในรันไทม์นี่ไม่ใช่ตัวเลือก
หนึ่งจะแปลงวัตถุใด ๆ ให้เป็นอาร์เรย์ไบต์ใน C # .NET 4.0 ได้อย่างไร
FileStream
หรือวัตถุใด ๆ ที่ห่อหุ้มที่จับเช่นนั้น)