2014-05-21 109 views
3

我需要序列化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)说:“类型‘B’不能从类型继承没有用DataContractAttribute或SerializableAttribute标记,考虑使用DataContractAttribute或SerializableAttribute标记基本类型'A',或者从派生类型中删除它们。

我应该实现一个自定义串行器吗?我怎样才能做到这一点(在Windows Phone 7的)

回答

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; } 
    } 
}