I have finished coding my application. But when I click the start button, my application throws an exception ..: '(
A first chance exception of type 'System.Runtime.Serialization.InvalidDataContractException' occurred in System.Runtime.Serialization.dll A first chance exception of type 'System.Reflection.TargetInvocationException' occurred in mscorlib.dll A first chance exception of type 'System.Runtime.Serialization.InvalidDataContractException' occurred in System.Runtime.Serialization.dll
So, I saw the argument e "Application_UnhandledException", and I could know the reason. "The type" GPACalculator.Subject "cannot be serialized. Consider labeling it with the DataContractAttribute attribute and mark all its members that you want to serialize with the DataMemberAttribute attribute."
I just make my class using default data types.
public class Subject : INotifyPropertyChanged { private string name; private GradePoint gradePoint; private int credit; public Subject(string name) { Name = name; GradePoint = new GradePoint(); } public string Name { get { return name; } set { Debug.WriteLine("Name: " + value); if (name != value) { name = value; OnPropertyChanged("Name"); } } } public GradePoint GradePoint { get { return gradePoint; } set { if (gradePoint != value) { gradePoint = value; OnPropertyChanged("GradePoint"); } } } public int Credit { get { return credit; } set { if (credit != value) { credit = value; OnPropertyChanged("Credit"); } } } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } public class GradePoint : INotifyPropertyChanged { private string mainGradePoint; private string subGradePoint; private int credit; public int Credit { get { return credit; } set { if (credit != value) { credit = value; OnPropertyChanged("Credit"); } } } public string MainGradePoint { get { return mainGradePoint; } set { value = value.ToUpper(); if (mainGradePoint != value) { mainGradePoint = value; OnPropertyChanged("MainGradePoint"); } } } public string SubGradePoint { get { return subGradePoint; } set { if (subGradePoint != value) { subGradePoint = value; OnPropertyChanged("SubGradePoint"); } } } public override string ToString() { return string.Format("{0}{1}", mainGradePoint, subGradePoint); } public double ToDouble(double perfectScore = 4.5F) { double gap = perfectScore - Math.Floor(perfectScore); double value; switch (mainGradePoint) { case "A": value = 4.0; break; case "B": value = 3.0; break; case "C": value = 2.0; break; case "D": value = 1.0; break; default: value = 0.0; return value; } switch (subGradePoint) { case "+": value += gap; break; case "-": value -= gap; break; } return value; } public event PropertyChangedEventHandler PropertyChanged; private void OnPropertyChanged(string propertyName) { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); } }
Above is my class ..
Please help me
source share