我需要在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中)
答案 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; }
}
}