序列化派生类而无需访问基类

时间:2014-05-21 16:52:58

标签: wpf windows-phone-7 serialization

我需要在Windows Phone 7项目中序列化派生类以进行墓碑状态。 但我无法访问基类的代码 - 由库公开 - 。

//don't have access to this class
public class A
{
     public string member1 {get;set;}
}

[DataContract]
public class B : A
{
     public B(){}; //CTOR

     [DataMember]
     public string member2 {get;set;}
}

当系统尝试序列化时(我将其保存到PhoneApplicationPage.State =>因此它自动序列化):它无法正常工作,异常(InvalidDataContractException)表示&#34 ;键入' B'不能从未标记DataContractAttribute或SerializableAttribute的类型继承。考虑标记基本类型' A'使用DataContractAttribute或SerializableAttribute,或从派生类型中删除它们。"

我应该实现自定义序列化程序吗?我该怎么做(在Windows Phone 7中)

1 个答案:

答案 0 :(得分:0)

您可以拥有该类型的成员变量,而不是从库类派生,并通过自定义getter和setter公开库类成员的属性:

[DataContract]
public class MyClass
{
    BaseClass Wrapped { get; set; }

    public MyClass()
    {
        Wrapped = new BaseClass( );
    }

    [DataMember]
    public string member1
    {
        get { return Wrapped.member1; }
        set { Wrapped.member1= value; }
    }
}