测试是否可以序列化类

For*_*say 3 c# generics xml-serialization

我想创建一个通用的方法来将类serizlize到文本(用作网络组件的一部分)该方法应该类似于:

public string SerializeToText<T>(T DataToSerialize);
Run Code Online (Sandbox Code Playgroud)

方法内容只是执行xml序列化,我可以这样做.我想知道的是,我是否可以检查T是否可以序列化:最好是在编译时,但在运行时失败.

Jar*_*Par 5

测试和查看对象是否可序列化的最可靠的单一方法序列化它.如果成功则该对象是可序列化的,如果它抛出然后它不可序列化.

请注意,这不是未来成功的预测因素,而是过去成功的预测因素.一个对象当然可以改变它的状态,使其不再可序列化.例如

[Serialiable] 
class Foo { 
  public object Field;
}
class Bar { }

var value = new Foo() { Field1 = 42; } // value is serializable
value.Field1 = new Bar();  // value is no longer serializable
Run Code Online (Sandbox Code Playgroud)

我写了一篇关于确定一个对象是否可序列化的问题的冗长博客文章.它深入研究了这种类型的方法.