我需要在我的Windows 7项目中序列化一个派生类,以获得tombstoning状态。但我无法访问由库-公开的基类代码。
//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 7中)
发布于 2015-04-09 00:15:28
与其从库类派生,不如使用该类型的成员变量,并通过自定义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; }
}
}https://stackoverflow.com/questions/23789414
复制相似问题