gpt4 book ai didi

wpf - 在不访问基类的情况下序列化派生类

转载 作者:行者123 更新时间:2023-12-04 08:32:41 24 4
gpt4 key购买 nike

我需要在我的 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) 说 “Type 'B' cannot inherit from a type that is没有用 DataContractAttribute 或 SerializableAttribute 标记。考虑用 DataContractAttribute 或 SerializableAttribute 标记基类型“A”,或者将它们从派生类型中移除。”

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

最佳答案

您可以拥有一个该类型的成员变量,并通过自定义 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; }
}
}

关于wpf - 在不访问基类的情况下序列化派生类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23789414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com