繁体   English   中英

“对象”不包含定义

[英]'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抛出ListCountLastHlistCountLH由于保护级别而无法访问

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++;               
            }
        }
  1. 看起来您正在从object 继承的类中调用base.listCountLH (即您没有从任何东西继承它 - object是默认类型)。 您需要像这样从Divergence5min继承:

     public class Incrementer: Divergence5min
  2. 现在为了从这里调用ListCountLastH ,该属性至少应该受到保护,以便从继承的类访问它:

     protected List<int> ListCountLastH;
  3. 要访问类上的非静态成员,您需要先使用以下命令实例化它:

     var divList = new DivergenceList5m(); divList.ListCountLastH.Add(divList.listCountLH);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM