каждый раз, когда я десериализую свой конфигурационный файл, массив бочек равен нулю, я пробовал так много разных комбинаций классов и кода, и, похоже, ничего не работает,
Я не могу перечислить все различные классы сериализации иметоды, которые я использовал здесь, так как это заняло бы слишком много страниц, я нахожусь на сборке 33 отладки этой проблемы, чтобы дать вам представление.
XML
<?xml version="1.0" encoding="utf-16"?>
<WeaponEnforcements xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<info>
<Name>Interior_Pulse_Laser_Base_Large</Name>
<TName>Turret</TName>
<AmmoName>Class1LaserBeamCharge</AmmoName>
<ShotSkip>15</ShotSkip>
<Range>100</Range>
</info>
<barrels>
<Barrel>
<BNum>0</BNum>
<FO>0</FO>
<BO>0</BO>
<LO>0</LO>
<RO>0</RO>
<LOff>0</LOff>
<ROff>0</ROff>
<UOff>0</UOff>
<DOff>0</DOff>
</Barrel>
</barrels>
<power>
<defaultScaler>0.005</defaultScaler>
<idleScaler>0.05</idleScaler>
<power>5000</power>
</power>
<heat>
<RHT>15740</RHT>
<HT>450</HT>
<HIPT>10</HIPT>
<RHIPT>10</RHIPT>
<HDPT>30</HDPT>
<RHDPT>80</RHDPT>
<RHID>1</RHID>
<RHDD>300</RHDD>
<HDD>30</HDD>
<HID>0</HID>
<KAC>10</KAC>
</heat>
<damage>
<DamageScaler>0</DamageScaler>
<SplashRadius>0</SplashRadius>
<SplashDamage>false</SplashDamage>
</damage>
<Version>55</Version>
<SenderId>0</SenderId>
</WeaponEnforcements>
Класс сериализации
namespace GCFEnergyWeaponsPlugin.Serialization
{
using System.Collections.Generic;
using System.Xml.Serialization;
[System.Serializable()]
public partial class WeaponEnforcements
{
public Info info { get; set; }
public List<Barrel> barrels = new List<Barrel>();
public Power power { get; set; }
public Heat heat { get; set; }
public Damage damage { get; set; }
public int Version { get; set; }
public int SenderId { get; set; }
}
/// <remarks/>
[System.SerializableAttribute()]
public partial class Info
{
public string Name { get; set; }
public string TName { get; set; }
public string AmmoName { get; set; }
public int ShotSkip { get; set; }
public int Range { get; set; }
}
[System.SerializableAttribute()]
public partial class Barrel
{
public int BNum { get; set; }
public double FO { get; set; }
public double BO { get; set; }
public double LO { get; set; }
public double RO { get; set; }
public float LOff { get; set; }
public float ROff { get; set; }
public float UOff { get; set; }
public float DOff { get; set; }
}
[System.SerializableAttribute()]
public partial class Power
{
public double defaultScaler { get; set; }
public double idleScaler { get; set; }
public int power { get; set; }
}
[System.SerializableAttribute()]
public partial class Heat
{
public int RHT { get; set; }
public int HT { get; set; }
public int HIPT { get; set; }
public int RHIPT { get; set; }
public double HDPT { get; set; }
public double RHDPT { get; set; }
public int RHID { get; set; }
public int RHDD { get; set; }
public int HDD { get; set; }
public int HID { get; set; }
public int KAC { get; set; }
}
[System.SerializableAttribute()]
public partial class Damage
{
public int DamageScaler { get; set; }
public int SplashRadius { get; set; }
public string SplashDamage { get; set; }
}
}
Другая информация
storagelocation_string = Path.Combine(folder, selected_type.ToString() + ".cfg");
StringReader xml_config = new StringReader(File.ReadAllText(storagelocation_string));
WeaponEnforcements ConfigData = (WeaponEnforcements)serializer.Deserialize(xml_config);
Исключительным результатом является массив определений в списке / массиве ( не может использовать сборщик или словарь, так как это для плагина, который работает с другимприложение, которое не принимает эти типы )
Код для чтения массива / списка в список
foreach (var barrel in ConfigData.barrels)
{
listBox1.Items.Add(barrel.BNum + "," + barrel.FO + "," + barrel.BO + "," + barrel.LO + "," + barrel.RO + "," + barrel.LOff + "," + barrel.ROff + "," + barrel.UOff + "," + barrel.DOff);
}
Имейте в виду, что остальные данные в конфигурации десериализуются правильно, этотолько с бочками, с которыми у меня проблемы.