I have written a serializable class which worked perfectly until I implemented an event within it.
Looking at the code below you will see that I have created a list class called CustomRecordList, this class is derived from the List class in order to access its events (in this case its Add).
namespace Serialization
{
public delegate void RecordReadEvent();
[ComVisible(false)]
[Serializable]
[XmlRoot]
public class RiskSet
{
[field:NonSerialized]
public event RecordReadEvent evtRecordRead;
private CustomRecordList<RiskRecord> oRiskRecords;
public RiskSet()
{
this.oRiskRecords = new CustomRecordList<RiskRecord>();
this.oRiskRecords.OnItemAdded += new CustomRecordList<RiskRecord>.ItemAdded(oRiskRecords_OnItemAdded);
}
[XmlElement(IsNullable = false)]
public CustomRecordList<RiskRecord> RiskRecord
{
get { return this.oRiskRecords; }
set { this.oRiskRecords = value; }
}
public void oRiskRecords_OnItemAdded(RiskRecord item)
{
evtRecordRead(); //THIS IS WHERE THE ERROR IS RAISED
}
}
}
NOTE: If I remove the call to raise the evtRecordRead event from the oRiskRecords_OnItemAdded method it work perfectly, only when it does call that event does it fail.
The error message (including InnerEception) I recieve is:
"There is an error in XML document (3, 2087). System.NullReferenceException: Object reference not set to an instance of an object.\r\n at Serialization.RiskSet.oRiskRecords_OnItemAdded(RiskRecord item) in C:\\Documents and Settings\\markm\\Desktop\\SCYLLA C# - Investigation\\With Events - Serialization - SCYLLA Based - All string data types\\Serialization - SCYLLA Based\\RiskSet.cs:line 40\r\n at Serialization.CustomRecordList`1.Add(T item) in C:\\Documents and Settings\\markm\\Desktop\\SCYLLA C# - Investigation\\With Events - Serialization - SCYLLA Based - All string data types\\Serialization - SCYLLA Based\\CustomRecordList.cs:line 20\r\n at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderRiskSet.Read8_RiskSet(Boolean isNullable, Boolean checkType)\r\n at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderRiskSet.Read9_RiskSet()"
QUESTION: How can I get this class to raise the evtRecordRead event withod causing the error.