Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для Tonny_Bennet

Ветеран


Сообщения: 1384
Благодарности: 177

Профиль | Отправить PM | Цитировать


ferget, Удалось создать минимальный проект с ошибкой. В классе Module должны быть поля двух классов (в примере LineIO, Rel)

Код: Выделить весь код
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Serialization;

namespace test_module
{
    class Program
    {
        static void Main(string[] args)
        {

            Module Mod = new Module();

            XmlSerializer ModSer = new XmlSerializer(Mod.GetType());

            using (StreamWriter ModSw = File.CreateText("Mod.txt"))
            {
                ModSer.Serialize(ModSw, Mod);
            }
        }
    }

    public class LineIO
    {
        public enum direct
        {
            Out = 0,
            In = 1,
        };

        private direct _dir;

        public enum state
        {
            _0,
            _1,
        }

        private state _state;

        public direct Direct
        {
            get { return _dir; }
            set { _dir = value; }
        }

        public state State
        {
            get { return _state; }
            set { _state = value; }
        }

        public LineIO()
        {
            _state = state._0;
            _dir = direct.Out;
        }
    }

    public class Rel
    {
        public enum state
        {
            _0,
            _1,
        }

        private state _state;

        public state State
        {
            get { return _state; }
            set { _state = value; }
        }

        public Rel()
        {
            _state = state._0;
        }
    }

    public class Module
    {
        private LineIO[] _lineIO;

        public LineIO[] lineIO
        {
            get { return _lineIO; }
            set { _lineIO = value; }
        }

        private Rel[] _rel;

        public Rel[] rel
        {
            get { return _rel; }
            set { _rel = value; }
        }

        public Module()
        {
            _lineIO = new LineIO[19];
            for (int i = 0; i < _lineIO.Length; i++)
            {
                lineIO[i] = new LineIO();
            }

            _rel = new Rel[5];
            for (int i = 0; i < _rel.Length; i++)
            {
                _rel[i] = new Rel();
            }
        }
    }
}
Если оставить только один класс (К примеру Rel) объект сериализуется.

PHP код: Выделить весь код

<?xml version="1.0" encoding="utf-8"?>
<Module xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <rel>
    <Rel>
      <State>_0</State>
    </Rel>
    <Rel>
      <State>_0</State>
    </Rel>
    <Rel>
      <State>_0</State>
    </Rel>
    <Rel>
      <State>_0</State>
    </Rel>
    <Rel>
      <State>_0</State>
    </Rel>
  </rel>
</Module>

-------
Сообщение оказалось полезным? Кнопка Полезное сообщение располагается чуть ниже.


Последний раз редактировалось Tonny_Bennet, 03-07-2012 в 09:46.


Отправлено: 09:32, 03-07-2012 | #3