1

私は問題を探していますが、これに取り組む方法をまだ混乱させています。基本クラスがあり、いくつかのプロパティがあります。基本クラスから 2 つの派生クラスがあります。

1 つの派生クラスで基本クラスのプロパティをシリアル化したいのですが、2 番目のシリアル化クラスで同じプロパティをシリアル化したくありません。

これは、単なる例としての実際のコードではありません。

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()
    {

    }

2 番目の派生クラス

 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してシリアライゼーションに含めるにはどうすればよいですか?DellRouterCiscoRouter

4

2 に答える 2

0

基本クラスでメソッドを定義しabstractます。これは、シリアル化/初期化を行うために使用されます。シリアル化するクラスでBaseRouter.r、このメソッドの実装でシリアル化します。他のクラスでは、論理的な代用となるものは何でもします。

于 2013-01-29T21:44:03.397 に答える
0

public 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 に答える