繁体   English   中英

在C#中的子类中添加新成员

[英]Adding new members in subclass in C#

namespace ClassesRa.Classes
{
    public class FicheLine
    {
        public int ItemRef { get; set; }
        public double Amount { get; set; }
        public string UnitCode { get; set; }
    }

    public class Fiche
    {
        public List<FicheLine> FicheLines { get; set; }
        public Fiche()
        {
            FicheLines = new List<FicheLine>();
        }
        public string ClientCode { get; set; }       
    }


    public class SalesFicheLine : FicheLine
    {
        public decimal Price { get; set; }
    }

    public class SalesFiche : Fiche
    {
        public List<SalesFicheLine> FicheLines { get; set; }
        public SalesFiche()
        {
            FicheLines = new List<SalesFicheLine>();
        }
        public string PayCode { get; set; }
    }
}

我想从Fiche派生SalesFiche并添加新成员。 我想从FicheLine派生SalesFicheLine并添加新成员。 我想在SalesFiche中将SalesFicheLine视为FicheLine。 上面的示例中是否存在错误或缺陷?

namespace ClassesRa
{
    public partial class fMain : Form
    {
        public fMain()
        {
            InitializeComponent();
        }

        private void fMain_Load(object sender, EventArgs e)
        {
            SalesFiche f = new SalesFiche();
            f.ClientCode = "120.001";
            f.PayCode = "30";
            f.FicheLines.Add(new SalesFicheLine() { ItemRef = 1, Amount = 10, UnitCode = "PK", Price = 100 });

            string xmlString = SerializeToString(f);
        }

        public string SerializeToString(object obj)
        {
            string str = "";
            XmlSerializer serializer = new XmlSerializer(obj.GetType());
            using (StringWriter writer = new StringWriter())
            {
                serializer.Serialize(writer, obj);
                str = writer.ToString();
            }
            return str;
        }
    }
}

当我尝试使用SerializeToString函数将其转换为XML时,出现以下错误:

{“反映属性'FicheLines'的错误。”}

谢谢..

您必须在SalesFiche类中重命名属性“ FicheLines”。 我用“ SalesFicheLines”进行了测试。 这将解决崩溃问题。

我还建议您将SaleFiche类更改为此

   public class SalesFiche : Fiche
    {
        public SalesFiche()
            :base()
        {
        }
        public string PayCode { get; set; }
    }

您已经可以访问FicheLines的FicheLines属性,因此实际上不需要在SalesFiche中创建另一个FicheLines属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM