For*_*say 3 c# generics xml-serialization
我想创建一个通用的方法来将类serizlize到文本(用作网络组件的一部分)该方法应该类似于:
public string SerializeToText<T>(T DataToSerialize);
Run Code Online (Sandbox Code Playgroud)
方法内容只是执行xml序列化,我可以这样做.我想知道的是,我是否可以检查T是否可以序列化:最好是在编译时,但在运行时失败.
测试和查看对象是否可序列化的最可靠的单一方法是序列化它.如果成功则该对象是可序列化的,如果它抛出然后它不可序列化.
请注意,这不是未来成功的预测因素,而是过去成功的预测因素.一个对象当然可以改变它的状态,使其不再可序列化.例如
[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)
我写了一篇关于确定一个对象是否可序列化的问题的冗长博客文章.它深入研究了这种类型的方法.