C#序列化和属性

时间:2013-12-11 15:19:29

标签: c# serialization properties xml-serialization

我有一种foreignkey实现,所以我的类有一个对另一个对象的引用的字段,然后它有一个属性,可以按需获取另一个对象:

[Serializable]
public class MyClass {
    private string otherId;
    public SomeClass Other {
        get { return SomeClass.GetById(otherId); }
        set { otherId = value.id; }
    }
}

现在,任何人都可以解释当我使用C#默认序列化序列化/反序列化此类时会发生什么(我想了解二进制和XML序列化)

2 个答案:

答案 0 :(得分:1)

简单的答案是,无论目标格式如何,序列化程序都会调用您的getter,然后将Other属性序列化为SomeClass。是否会引发异常取决于SomeClass.GetById实际执行的操作。

SomeClass隐含为可序列化的,因为它是可序列化对象的属性。

答案 1 :(得分:1)

其他ID和其他成员都将被序列化/反序列化。

要阻止其他属性被序列化,您可以在该属性上使用[IgnoreDataMember]属性。