我正在寻找一种简便的方法来检查 C# 中的对象是否可序列化。
我们知道,您可以通过实现 ISerializable 接口或在类顶部放置 [Serializable] 来使对象可序列化。
我正在寻找一种快速检查此属性的方法,而无需反射该类以获取其属性。使用 is 语句可以快速使用接口。
使用 @Flard 的建议,这是我想出的代码,请告诉我是否有更好的方法。
我们知道,您可以通过实现 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指出的那样。