Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   C# Наследование и серилизация (https://forum.antichat.xyz/showthread.php?t=176409)

dos999 05.02.2010 15:33

C# Наследование и серилизация
 
столкнулся со следующей проблемой

есть классы
Код:

public class Device
{
public string ConnectionString;
public int Type;
public virtual Boolean Connect()                   
{return false;}
}

public class DeviceS
{
public Guid SGuid;
[XmlArrayItem("Device", typeof(Device))]
public ArrayList Items;
}

и есть 2 класса наследованные от Device
Код:

public class Camera : Device
{
        public override Boolean Connect()
        {
          /*тут какой то код*/
        }
}

public class Hub : Device
{
        public override Boolean Connect()
        {
          /*тут какой то код*/
        }
}

мне нужно сохранять и загружать из XMLя класс DeviceS. Делаю я это так:
Код:

      public DeviceS Load()
        {
            FileStream fStream = null;
            XmlSerializer xmlFormat = new XmlSerializer(typeof(Devices));
            try
            {
                fStream = new FileStream(XML_FILE_NAME, FileMode.Open,
                    FileAccess.Read, FileShare.None);
                DeviceS LDeviceS = new DeviceS();
                LDeviceS = (DeviceS)xmlFormat.Deserialize(fStream);
                fStream.Close();
                return LDeviceS;
            }
            catch
            { 
                return false;
            }           
        }

        public bool Save(DeviceS LDeviceS)
        {
            XmlSerializer xmlFormat = new XmlSerializer(typeof(DeviceS));
            FileStream fStream = new FileStream(XML_FILE_NAME, FileMode.Create,
                FileAccess.Write, FileShare.None);
            xmlFormat.Serialize(fStream, LDeviceS);
            fStream.Close();
            return true;         
        }

проблема в том что DeviceS.Items должен содержать не родителя Device а потомков Camera и/или Hub. помогите реализовать

arpm 05.02.2010 17:49

[XmlInclude(typeof(Camera)), XmlInclude(typeof(Hub))]
public class DeviceS
не поможет?

dos999 05.02.2010 18:53

Цитата:

[XmlInclude(typeof(Camera)), XmlInclude(typeof(Hub))]
public class DeviceS
не поможет?
[XmlInclude(typeof(Camera))]
[XmlInclude(typeof(Hub))]
public class Device

вот так вот заработало... + ко всему у меня олин из дочерних классов был приват, исправил на паблик и всё запахало. большое спасибо


Время: 02:18