Click here to Skip to main content
15,893,668 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
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.

C#
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>
Posted
Updated 29-Mar-16 3:17am
v2
Comments
F-ES Sitecore 27-Mar-16 7:35am    
You can't just dump hundreds of lines of code and expect people to spot an issue. If you have an error message then at least state the line it happens on.
Sergey Alexandrovich Kryukov 27-Mar-16 13:24pm    
The question makes no sense at all. You did not show a single data contract. To have a data contract, you need to use the attributes [DataContract] and [DataMember]. Also, the problem has nothing to do with Data Contract at all. It's just the file name is wrong, or something. Use the debugger, that's it.

My best advice would be: throw out this code and write new from scratch. What you show is not programming at all. You should not hard-code all these strings. You should not hard-code anything at all, or, say, hard-code almost nothing. You should learn .NET globalization and localization... And so on...

Anyway, it's impossible to find your bug, because you did not show anything relevant to it. The problem looks quite simple, you can rather solve it by yourself.

—SA

1 solution

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

C#
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; }
        }
    }
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900