本文介绍了使用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 => 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 => 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>
推荐答案
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#中进行序列化的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!