[英]'Object' does not contain a definition for
我试图创建一个事件处理程序,我得到错误: 'Object' does not contain a definition for ListCountLastH "
并同listCountLH
。
将private List
更改为public List
没有区别,我很确定我必须在protected override void OnStateChange()
初始化列表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
"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++;
}
}
看起来您正在从object
继承的类中调用base.listCountLH
(即您没有从任何东西继承它 - object
是默认类型)。 您需要像这样从Divergence5min
继承:
public class Incrementer: Divergence5min
现在为了从这里调用ListCountLastH
,该属性至少应该受到保护,以便从继承的类访问它:
protected List<int> ListCountLastH;
要访问类上的非静态成员,您需要先使用以下命令实例化它:
var divList = new DivergenceList5m(); divList.ListCountLastH.Add(divList.listCountLH);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.