Как обновить значение в словаре который записан в список?
есть вот такая схема из списков словарей. Сделано это для удобства хранения в одном файле.
class PluginData
{
public Dictionary<string, string> Deploys = new Dictionary<string, string>();
public Dictionary<string, int> Destroys = new Dictionary<string, int>();
}
public string chatName = "Ивент RB";
PluginData pluginData;
void Loaded()
{
LoadPluginData();
}
void LoadPluginData()
{
pluginData = Interface.GetMod().DataFileSystem.ReadObject<PluginData>("RBEvent");
}
void SavePluginData()
{
Interface.GetMod().DataFileSystem.WriteObject("RBEvent", pluginData);
}
Далее в скрипте мне нужно обновить одно из заранее записанных значений в словаре Destroys я пытаюсь обратится к нему как ++pluginData.RBDestroys.Destroys.destroyer; (по сути значение является числом) мне нужно просто добавить к нему единицу, каждый раз когда выполняются условия и сохранить обратно в файл SavePluginData() но мой древний компилятор ругается: error CS1061: Type `System.Collections.Generic.List<Oxide.Plugins.RBEvent.RBDestroys>' does not contain a definition for `destroyer' and no extension method `destroyer' of type `System.Collections.Generic.List<Oxide.Plugins.RBEvent.RBDestroys>' could be found. Are you missing an assembly reference?
Что ему не подходит? что я не так делаю?
Тут выполняю код:
void OnKilled(TakeDamage damage, DamageEvent evt)
{
if(evt.victim.idMain == null || evt.attacker.idMain == null) return;
if(damage != null && evt.victim.idMain is DeployableObject && evt.victim.idMain.name == "RepairBench(Clone)")
{
var attacker = evt.attacker.client.netUser;// Уничтожил
var attacked = evt.victim.client.netUser;// Уничтоженный
var destroyer = evt.attacker.client.netUser.displayName;
var structure = evt.victim.idMain as DeployableObject;
Puts(destroyer+" уничтожил "+structure.name+" игрока "+attacked.displayName);
//Проверка что уничтожен не свой RB
//structure != null && attacker != null
// && !attacker.admin
// && evt.damageTypes == DamageTypeFlags.damage_explosion)
foreach (var x in pluginData.Destroys)
{
if (!pluginData.Destroys.ContainsKey(destroyer)) {
pluginData.Destroys.Add(destroyer, 0);
} else {
//int kills = pluginData.Destroys.Value();
++pluginData.Destroys[destroyer];
//pluginData.RBDestroys.Add(RBDeploys { Destroys = Dictionary<string, int> {{destroyer, kills+1}} });
//pluginData.Destroys[destroyer] = pluginData.Destroys[destroyer]+1);
SavePluginData();
rust.SendChatMessage(attacker, chatName, "Вы только что уничтожили Repair Bench! Всего уничтожил: "+pluginData.Destroys[destroyer]);
return;
}
}
}
}