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

Reply via email to