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