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'的错误。”}
谢谢..
答案 0 :(得分:0)
您必须在SalesFiche类中重命名属性“FicheLines”。我用“SalesFicheLines”测试了它。这将解决崩溃问题。
我还建议您将SaleFiche类更改为此
public class SalesFiche : Fiche
{
public SalesFiche()
:base()
{
}
public string PayCode { get; set; }
}
您已经可以访问FicheLines的FicheLines属性,因此无需在SalesFiche中创建另一个FicheLines属性。