我有一种foreignkey实现,所以我的类有一个对另一个对象的引用的字段,然后它有一个属性,可以按需获取另一个对象:
[Serializable]
public class MyClass {
private string otherId;
public SomeClass Other {
get { return SomeClass.GetById(otherId); }
set { otherId = value.id; }
}
}
现在,任何人都可以解释当我使用C#默认序列化序列化/反序列化此类时会发生什么(我想了解二进制和XML序列化)
答案 0 :(得分:1)
简单的答案是,无论目标格式如何,序列化程序都会调用您的getter,然后将Other
属性序列化为SomeClass
。是否会引发异常取决于SomeClass.GetById
实际执行的操作。
SomeClass
隐含为可序列化的,因为它是可序列化对象的属性。
答案 1 :(得分:1)
其他ID和其他成员都将被序列化/反序列化。
要阻止其他属性被序列化,您可以在该属性上使用[IgnoreDataMember]
属性。