1

我正在寻找一个问题,但我仍然很困惑如何解决这个问题。我有基类,并且有一些属性。基类有两个派生类。

我想在一个派生类中序列化基类属性,但我不想在第二个序列化类中序列化相同的属性。

这不是实际代码,仅用于示例目的。

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.rDellRouter课堂上避免并包含在CiscoRouter序列化中?

4

2 回答 2

0

在基类中定义一个abstract方法,这将用于进行序列化/初始化。在要序列化的类中BaseRouter.r,在此方法实现中对其进行序列化。在另一堂课上,做任何合乎逻辑的替代品。

于 2013-01-29T21:44:03.397 回答
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; }
    ...
}
于 2013-01-29T21:44:18.093 回答