ฉันกำลังมองหาวิธีง่ายๆในการตรวจสอบว่าวัตถุใน C # สามารถต่ออนุกรมกันได้หรือไม่
อย่างที่เราทราบกันดีว่าคุณสร้างออบเจ็กต์ที่สามารถทำให้เป็นอนุกรมได้โดยการใช้อินเทอร์เฟซISerializableหรือโดยการวาง[Serializable]ที่ด้านบนสุดของคลาส
สิ่งที่ฉันกำลังมองหาคือวิธีที่รวดเร็วในการตรวจสอบสิ่งนี้โดยไม่ต้องสะท้อนถึงคลาสเพื่อให้ได้แอตทริบิวต์ อินเทอร์เฟซจะรวดเร็วโดยใช้คำสั่งis
ใช้คำแนะนำของ @ Flard นี่คือรหัสที่ฉันคิดขึ้นมาว่ามีวิธีที่ดีกว่านี้
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
หรือดีกว่าเพียงแค่รับประเภทของวัตถุจากนั้นใช้คุณสมบัติ IsSerializable กับประเภท:
typeof(T).IsSerializable
โปรดจำไว้ว่าสิ่งนี้ดูเหมือนจะเป็นเพียงคลาสที่เรากำลังจัดการอยู่หากคลาสนั้นมีคลาสอื่น ๆ ที่คุณอาจต้องการตรวจสอบทั้งหมดหรือลองจัดลำดับและรอข้อผิดพลาดตามที่ @pb ชี้ไว้