Я пытаюсь создать обработчик событий и получаю сообщение об ошибке: 'Object' does not contain a definition for ListCountLastH "
и то же самое для listCountLH
.
Изменение private List
на public List
не имеет значения, и я довольно конечно, я должен инициализировать списки в protected override void OnStateChange()
, но в любом случае public /*override*/ void OnStateChange()
не имеет значения, поэтому любая помощь будет принята с благодарностью.
public class Incrementer : DivergenceList5m
выбрасывает ListCountLastH
и listCountLH
, недоступные из-за уровня защиты
DivergenceList5m.ListCountLastH.Add(DivergenceList5m.listCountLH);
бросает дополнительно "An object reference is required for the non-static field, method or property'Namwspace.Class.ListCountLastH "
и то же самое для listCountLH
, и я просто не знаю, что еще попробовать ...
Спасибо
public class Divergence5min : Strategy
{
public int listCountLH;
private List<int> ListCountLastH;
private List<double> LastHSwDMI;
protected override void OnStateChange()
{
ListCountH = new List<int>();
LastHSwDMI = new List<double>();
}
...
protected override void OnBarUpdate()
{
if (!LHsDmiAdd && b > 1 && HSwDMI[b-1] - HSwDMI[b] > 0.001 && HSwDMI[b-1] - HSwDMI[b-2] > 0.001)
{
LastHSwDMI.Add(HSwDMI[b-1]);
listCountLH = LastHSwDMI.Count;
ListCountLastH.Add(listCountLH);
...
}
}
public class Incrementer
{
public EventHandler ItemAdded;
public void AddItem()
{
base.ListCountLastH.Add(base.listCountLH);
if (ItemAdded != null)
ItemAdded(this, null);
}
}
}
Такое изменение с помощью private List
по-прежнему приводит к ошибке «недоступен из-за уровня защиты». Абонентский класс не выдает никаких ошибок, хотя
public class Incrementer : DivergenceList5m
{
public event EventHandler ItemAdded;
public void AddItem()
{
var divList = new DivergenceList5m();
divList.ListCountLastH.Add(divList.listCountLH);
if (ItemAdded != null)
ItemAdded(this, null);
}
}
class AddingItems
{
public int ItemsCount {get; private set;}
public void Items (Incrementer incrementer)
{
ItemsCount = 0;
incrementer.ItemAdded += AddItems;
}
void AddItems (object source, EventArgs e)
{
ItemsCount++;
}
}
Последняя версия кода
public class Divergence5min : Strategy
{
public int listCountLH;
public List<int> ListCountLastH;
public List<double> LastHSwDMI;
...
public class Incrementer : DivergenceList5m
{
public event EventHandler ItemAdded;
public void AddItem()
{
var divList = new DivergenceList5m();
divList.ListCountLastH.Add(divList.listCountLH);
if (ItemAdded != null)
ItemAdded(this, null);
}
}
class AddingItems
{
public int ItemsCount {get; private set;}
public void Items (Incrementer inc)
{
ItemsCount = 0;
inc.ItemAdded += AddItems;
}
void AddItems (object source, EventArgs e)
{
ItemsCount++;
}
}