使用datacontractserializator在C#中进行序列化的问题 [英] Problem to make serialization in C# with datacontractserializator

查看:64
本文介绍了使用datacontractserializator在C#中进行序列化的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我只是想学习C#/现在我在制作项目序列化方面遇到了问题。它显示了FileNotFoundExeptione和< system.io.filenotfoundexception in =mode =hold>我错了什么?我正在使用DataContractSerializator进行序列化。我没有找到任何带有Windows窗体的DataContractSerializator的例子,该怎么做。谢谢。



Im just statring to learn C#/ Now I have a problem with making serialization of my project. Its showing me FileNotFoundExeptione and <system.io.filenotfoundexception in="" mode="hold"> What Im dong wrong? Im doing serialization with DataContractSerializator. I have no found any examples of DataContractSerializator with Windows Forms, how to do right. Thank you.

using InsuranceLibrary;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows.Forms;
using System.Runtime.Serialization;
using System.Xml;
using System.IO;

namespace InsuranceStore
{
    public partial class InsuranceShop : Form
    {
        public Store store = new Store();// подключили LibraryStore к InsuranceShop
        private List<programing> preferenceprogramData = new List<programing>();//все что будет в preferenceprogram
        BindingSource programsBinding = new BindingSource();// конструктор BindingSource инициализирует новый экземпляр класса, используя указ.источник в и элемент данных метод связки programs с InsuranceShop

        BindingSource programBinding = new BindingSource();
        BindingSource companiesBinding = new BindingSource();
        private double StoreProfit = 0;


        public InsuranceShop()
        {
            InitializeComponent();
            Setupdata();//инициализация листа List<company> будет в InsuranceShop 
            programsBinding.DataSource = store.Programs.Where(x =&gt; x.Sold == false).ToList();//это фильтр в programListbox показывает какие программы проданы(х- программы).ToList возвращает индекс номера ппрограммы назад programListbox
            programslistBox1.DataSource = programsBinding;

            programslistBox1.DisplayMember = "Display";// отображает название программы и тариф
            programslistBox1.ValueMember = "Display";
            programBinding.DataSource = preferenceprogramData;

            preferenceprogramListbox.DataSource = programBinding; //DataSource возвращает или задает  источник данных к которому привязан соеденитель 

            preferenceprogramListbox.DisplayMember = "Display";
            preferenceprogramListbox.ValueMember = "Display";
            companiesBinding.DataSource = store.Companies;

            companyListBox.DataSource = companiesBinding;
            companyListBox.DisplayMember = "Display";
            companyListBox.ValueMember = "Display";

            ReadDB();
            //cartBinding.DataSource = shoppingCartdata;
            //preferenceprogramListbox.DataSource = cartBinding;

            //preferenceprogramListbox.DisplayMember="Display";
            //preferenceprogramListbox.ValueMember = "Display";

        }
        
        public void Setupdata()// обозначение коллекции  страховых компаний
        {
            //Company demoCompany = new Company();
            //demoCompany.Name = "ExpressInsurance";
            //demoCompany.Comission = .5;
            //store.Companies.Add(demoCompany);

            //demoCompany = new Company();
            //demoCompany.Name = "AXA";
            //demoCompany.Comission = .5;
            //store.Companies.Add(demoCompany);

            store.Companies.Add(new Company { Name = "ExpressInsurance" });// обозначение коллекции  страховых компаний одной строкой
            store.Companies.Add(new Company { Name = "AXA" });//значение Comission не устанавливается, так как установлено по умолчанию в конструкторе public Company()


            store.Programs.Add(new InsuranceLibrary.Programing
            {
                Title = "VIP",
                Descriptione = "Легковые авто стоимостью от 801000 грн.; Франшиза : -угон        0%; -повреждения 0%;\n Объем страховой защиты:\n  ДТП, Противоправные действия третьих лиц,пожар, стихийное явление,нападанеие животных,падение предметов, угон",
                Price = 5.6,
                PriceAvto = 801000,
                Owner = store.Companies[0]
            });

            store.Programs.Add(new InsuranceLibrary.Programing
            {
                Title = "Prenium",
                Descriptione = "Легковые авто стоимостью от 150 000 грн.Возраст авто до 2-х лет  Франшиза : -угон        5%; -повреждения 0%; Объем страховой защиты:  ДТП, Противоправные действия третьих лиц,пожар, стихийное явление,нападанеие животных,падение предметов, угон",
                Price = 4.6,
                PriceAvto = 150000,
                Owner = store.Companies[0]
            });
            store.Programs.Add(new InsuranceLibrary.Programing
            {
                Title = "Comfort",
                Descriptione = "КАСКО Comfort условия: предусматривает :    Легковые авто стоимостью от 100000 грн.; Возраст авто до 8 лет Франшиза : -угон        5-10%; -повреждения 0 - 2%; Объем страховой защиты:  ДТП, Противоправные действия третьих лиц,пожар, стихийное явление,нападанеие животных,падение предметов, угон",
                Price = 3.6,
                PriceAvto = 100000,
                Owner = store.Companies[0]
            });
            store.Programs.Add(new InsuranceLibrary.Programing
            {
                Title = "AllInclude",
                Descriptione = "Страховая сумма устанавливается на момент страхования.Возраст авто до 10-х лет  Франшиза : -угон - на выбор; -повреждения - на выбор; Объем страховой защиты:  ДТП, Противоправные действия третьих лиц,пожар, стихийное явление,нападанеие животных,падение предметов, угон",
                Price = 6.7,
                PriceAvto = 100000,
                Owner = store.Companies[1]
            });
            store.Programs.Add(new InsuranceLibrary.Programing
            {
                Title = "Light",
                Descriptione = "Страховая сумма устанавливается на момент страхования. Возраст авто до 5 лет Франшиза : -угон  на выбор; -повреждения на выбор; Объем страховой защиты:  ДТП, Противоправные действия третьих лиц,пожар, стихийное явление,нападанеие животных,падение предметов, угон",
                Price = 7.6,
                PriceAvto = 500000,
                Owner = store.Companies[1]
            });

            store.Name1 = "VoluntaryInsurance";
           // store.Programs.Add(new InsuranceLibrary.Programing
            //{
            //    Title = "Light",
            //    Descriptione = "Страховая сумма устанавливается на момент страхования. Возраст авто до 5 лет Франшиза : -угон  на выбор; -повреждения на выбор; Объем страховой защиты:  ДТП, Противоправные действия третьих лиц,пожар, стихийное явление,нападанеие животных,падение предметов, угон",
            //    Price = 7.6,
            //    PriceAvto = 500000,
            //    Owner = store.Companies[1]
            //});
        }
        private void shoppingCartListbox_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void programslistBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void progressBar1_Click(object sender, EventArgs e)
        {

        }

        //private void addToCart_Click(object sender, EventArgs e)
        //{
        //    определяем какую страховую программу выбираем.Удаление ненужной программы
        //    Programing selectedPrograms = (Programing)programslistBox1.SelectedItem;
        //    MessageBox.Show(selectedPrograms.Title);


        //}

        private void addToCart_Click_1(object sender, EventArgs e)
        {
            Programing selectedPrograms = (Programing)programslistBox1.SelectedItem;
            // MessageBox.Show(selectedPrograms.Title);
            preferenceprogramData.Add(selectedPrograms);
            programBinding.ResetBindings(false);// строка используется чтобы мы смогли перетаскивать програмы с общего списка в выбранный (с programslistBox  в preferencelistBox).Метод обновляет инфо
           
        }

        private void makePurchase_ClientSizeChanged(object sender, EventArgs e)
        {
            // определяем выбранные элементы
            foreach (Programing programs in preferenceprogramData)
            {
                programs.Sold = true;
                programs.Owner.PaymentDue = ((programs.Owner.Comission * programs.Price * programs.PriceAvto) / 100);//подсчет платежа каждой страховой компании на основании комиссии и тарифа
                
                StoreProfit += ((programs.Owner.Comission * programs.Price * programs.PriceAvto) / 100);
            }
            programsBinding.DataSource = store.Programs.Where(x =&gt; x.Sold == false).ToList();//это фильтр в programListbox показывает какие программы проданы(х- программы).ToList возвращает индекс номера ппрограммы назад programListbox.Строка обязательно повторно вызывается,так как есть foreach

            preferenceprogramData.Clear();
            programBinding.ResetBindings(false);
            programsBinding.ResetBindings(false);
            companiesBinding.ResetBindings(false);
            storeProfitValue.Text = string.Format("{0} грн.", StoreProfit);
            new InsuranceShop().ShowDialog();
        }

        private void storeProfitValue_Click(object sender, EventArgs e)
        {

        }

        public void butInformation_Click(object sender, EventArgs e)
        {
            new Info().Show();
            this.Hide();
        }

       
        private void InsuranceShop_Closed(object sender, FormClosedEventArgs e)
        {
            WriteDB();
        }

        private static void WriteDB()
        {
            DataContractSerializer dcs = new DataContractSerializer(typeof(Store));
            XmlWriter xmlw = XmlWriter.Create("Store.xml");
            dcs.WriteObject(xmlw, new Store());
            xmlw.Close();
        }

        private static void ReadDB()
        {
            DataContractSerializer dcs = new DataContractSerializer(typeof(Store));
            XmlReader xmlr = XmlReader.Create("Store.xml");
            dcs.ReadObject(xmlr);
            xmlr.Close();
        }</company></programing></programing>

推荐答案

将XmlRoot,XmlElement,XmlAttribute等声明为Store类。



Declare XmlRoot, XmlElement, XmlAttribute etc to your "Store" class.

using System.Xml.Serialization;

[XmlRoot(ElementName = "Response")]
    public class Response
    {
        private string _ErrorCode = "";
        private string _ErrorDescription = "";

        [XmlElement(ElementName = "EC")]
        public string ErrorCode
        {
            get { return _ErrorCode; }
            set { _ErrorCode = value; }
        }

        [XmlElement(ElementName = "ED")]
        public string ErrorDescription
        {
            get { return _ErrorDescription; }
            set { _ErrorDescription = value; }
        }
    }


这篇关于使用datacontractserializator在C#中进行序列化的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆