我正在寻找一种简单的方法来检查C#中的对象是否可序列化.
我们知道,通过实现ISerializable接口或将[Serializable]放在类的顶部,可以使对象可序列化.
我正在寻找的是一种快速检查方法,而无需反映类以获得它的属性.接口可以快速使用is语句.
使用@Flard的建议这是我提出的代码,尖叫是有更好的方法.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
Run Code Online (Sandbox Code Playgroud)
或者甚至更好地获取对象的类型,然后在类型上使用IsSerializable属性:
typeof(T).IsSerializable
Run Code Online (Sandbox Code Playgroud)
请记住,这似乎只是我们正在处理的类,如果类包含其他类,您可能想要检查它们或尝试序列化并等待错误,如@pb指出的那样.