XmlSerializer不会序列化只读字段,只读属性(仅与getter
),私有字段等。另外,如果类没有无参数构造函数,它将不会序列化对象。我的问题,为什么我不能用XmlSerializer序列化只读字段?
1)AFAIK出现这些问题是因为私有(和只读)字段无法访问(和更改),而deserilization。但是如果我不进行反序列化呢?难道我没有这个选择吗?
2)由于相同的原因(反序列化问题),如果类没有无参数构造函数,它不会序列化对象。但是,当我添加一个私人无参数构造函数,它工作正常。怎么样?
3)我不喜欢为每个类添加一个无参数构造函数,并且为了能够序列化它而使所有的字段成为公共的而非只读的。现在我在私有无参数构造函数中抛出异常以防止使用。是否有构造函数的属性告诉编译器只有授权的调用才能被构造函数使用?如果不是,至少我想用一个抛出异常的属性标记它,如果它被调用。
1,2)我认为原因是稍后序列化的点是反序列化。这就像你想把东西放在你的旅行箱里,尽管你知道机场安全不会让你回到你身边。 3)你认为'授权'电话是什么意思?来自课堂本身的电话? –
@KamilT通过“授权呼叫”我的意思是,例如,只允许来自特定方法的呼叫(或根本不允许)。对于这个问题'Obsolote'解决了我的问题。 – serdar