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>