Thank you for responding. Yes, there is more to the class than what I posted. The class includes properties:
[System.Xml.Serialization.XmlTypeAttribute(
TypeName = "SensorID.Reader.Agile")]
public class AgileReaderSettings : IReaderSettings
{
private int m_noAntennas;
private string m_ipAddress;
private int m_port;
private int m_autoIDTimeout;
private int m_scanTimeout;
// I added this per your suggestion but it still
didn't work,
[System.Xml.Serialization.XmlElement( typeof(
ProtocolsEnum ))]
public ProtocolsList m_protocols;
public AgileReaderSettings()
{
m_noAntennas = 2;
m_ipAddress = string.Empty;
m_port = 8080;
m_autoIDTimeout = 250;
// 1/4 sec
m_scanTimeout = 1000;
// 1 sec
m_protocols = new ProtocolsList();
}
public AgileReaderSettings(AgileReaderSettings
source)
{
m_noAntennas = source.m_noAntennas;
m_ipAddress = source.IPAddress;
m_port = source.Port;
m_autoIDTimeout = source.AutoIDTimeout;
m_scanTimeout = source.ScanTimeout;
m_protocols = source.Protocols;
}
public static AgileReaderSettings CreateDefault()
{
AgileReaderSettings settings = new
AgileReaderSettings();
settings.m_ipAddress = "";
settings.m_port = 8080;
settings.m_autoIDTimeout = 250;
// 1/4 sec
settings.m_scanTimeout = 1000;
// 1 sec
settings.m_noAntennas = 2;
settings.m_protocols = new ProtocolsList();
settings.m_protocols.AddProtocol(ProtocolsEnum.CC1356);
settings.m_protocols.AddProtocol(ProtocolsEnum.CC915);
settings.m_protocols.AddProtocol(ProtocolsEnum.ISO15693);
return settings;
}
public int NoAntennas
{
get
{
return m_noAntennas;
}
set
{
m_noAntennas = value;
}
}
public string IPAddress
{
get
{
return m_ipAddress;
}
set
{
m_ipAddress = value;
}
}
public int Port
{
get
{
return m_port;
}
set
{
m_port = value;
}
}
public int AutoIDTimeout
{
get
{
return m_autoIDTimeout;
}
set
{
m_autoIDTimeout = value;
}
}
public int ScanTimeout
{
get
{
return m_scanTimeout;
}
set
{
m_scanTimeout = value;
}
}
public ProtocolsList Protocols
{
get
{
return m_protocols;
}
set
{
m_protocols = value;
}
}
public IReader Connect(IMemoryMapBase memoryMap,
ISynchronizeInvoke threadAffinitiveEvents)
{
IFixedMemoryMap fixedMemoryMap;
if(memoryMap != null)
{
fixedMemoryMap =
(IFixedMemoryMap)memoryMap;
}
else
{
fixedMemoryMap = null;
}
// create reader connection class
Agile_Reader readerConnection = new
Agile_Reader();
// connect to the reader
readerConnection.Connect(this,
fixedMemoryMap);
// <<>> dummy reader settings object, will
need replacing
ReaderSettings readerSettings = new
ReaderSettings(2000, 200);
// create reader class, which manages the
reader
ReaderBase reader = new
AgileReaderMgr(readerConnection, threadAffinitiveEvents, readerSettings);
return reader;
}
public IReaderSettings Copy()
{
return new AgileReaderSettings(this);
}
public string Description
{
get
{
string protocols = string.Empty;
for (int i = 0; i <
m_protocols.Length(); i++)
{
protocols += " - " +
m_protocols[i].ToString();
}
return "Port: " + m_port.ToString()
+ "\nIP Address: " + m_ipAddress + "\nAuto ID Timeout: " +
m_autoIDTimeout.ToString() +
"\nScan Timeout: " + m_scanTimeout.ToString() +
"\nNumber of Antennas: " +
m_noAntennas + "\nProtocols: " + protocols;
}
}
public string ReaderTypeName
{
get
{
return "SensorID.Reader.Agile";
}
}
}
-----Original Message-----
From: Christoph Schittko [mailto:[EMAIL PROTECTED]
Sent: Wednesday, June 04, 2003 12:15 PM
To: [EMAIL PROTECTED]
Subject: Re: [ADVANCED-DOTNET] XML Serialization
> [System.Xml.Serialization.XmlTypeAttribute(
> TypeName = "SensorID.Reader.Agile")]
> public class AgileReaderSettings : IReaderSettings
> {
> private int m_noAntennas;
> private string m_ipAddress;
> private int m_port;
> private int m_autoIDTimeout;
> private int m_scanTimeout;
> private ProtocolsList m_protocols;
> }
> The problem I am having is that I ccannot serialize the protocols list
> which is an array list of enumerated types. Everything else
> serializes with
> no problems. I am thinking the reason may be because it's a list of
> enumerated types.
I don't think the class you posted will serialize at all? Did you miss
some properties that are present in the original implementation?
What kind of List is the ProtocolsList? Is it derived from CollectionBase?
Enumerated types should not be a problem, but you need to attach
XmlArrayItem or XmlElement attributes to collections to specify the types
the XmlSerializer will encounter inside the collections, unless it's a
strongly typed collection. Your code with the attribute would look
something like:
[System.Xml.Serialization.XmlElement( typeof( ProtocolEnum )]
public ProtocolsList m_protocols;
HTH,
Christoph Schittko
Software Architect, .NET Mentor
MS MVP XML
