我正在寻找一个问题,但我仍然对如何解决这个问题感到困惑。 我有基类,有一些属性。 基类有两个派生类。
我想在一个派生类中序列化基类属性,但我不想在第二个序列化类中序列化相同的属性。
这不是仅用于示例目的的实际代码。
public class BaseRouter
{
private Double r;
private Double bch;
[XmlElement("BaseRouter.r")]
public double R { get { return r; } set { r = value; } }
}
第一个派生类
public class CiscoRouter : BaseRouter
{
private String mRID;
[XmlAttribute("ID", Namespace = "rdf")]
public String MRID { get { return this.mRID; } set { mRID = value; } }
public Router()
{
}
第二个派生类
public class DellRouter : BaseRouter
{
private String mRID;
[XmlAttribute("ID", Namespace = "rdf")]
public String MRID { get { return this.mRID; } set { mRID = value; } }
public Router()
{
}
}
如何在BaseRouter.r
课程中避免DellRouter
并将其包括在CiscoRouter
序列化中?
答案 0 :(得分:0)
在基类中定义abstract
方法,这将用于进行序列化/初始化。在您要序列化的类中BaseRouter.r
在此方法实现中序列化它。在另一个类中,做任何合乎逻辑的替代。
答案 1 :(得分:0)
我相信您可以实现公共的ShouldSerializeR()函数并在DellRouter类中覆盖它以返回false。
class BaseRouter
{
...
public double R { get { return r; } set { r = value; } }
public virtual bool ShouldSerializeR() { return true; }
...
}
class DellRouter
{
...
public override bool ShouldSerializeR() { return false; }
...
}