简体   繁体   English

“对象”不包含定义

[英]'Object' does not contain a definition for

I'm trying to create an event handler and I am getting the error : 'Object' does not contain a definition for ListCountLastH " and same for listCountLH .我试图创建一个事件处理程序,我得到错误: 'Object' does not contain a definition for ListCountLastH "并同listCountLH

Changing private List to public List makes no difference and I am pretty sure I have to initialise the lists in protected override void OnStateChange() but anyway public /*override*/ void OnStateChange() makes no difference, so any help would be greatly appreciated.private List更改为public List没有区别,我很确定我必须在protected override void OnStateChange()初始化列表protected override void OnStateChange()但无论如何public /*override*/ void OnStateChange()没有区别,所以任何帮助将不胜感激.

public class Incrementer : DivergenceList5m throws ListCountLastH and listCountLH inaccessible due to protection level public class Incrementer : DivergenceList5m抛出ListCountLastHlistCountLH由于保护级别而无法访问

DivergenceList5m.ListCountLastH.Add(DivergenceList5m.listCountLH); throws additionally "An object reference is required for the non-static field, method or property'Namwspace.Class.ListCountLastH " and same for listCountLH and I just don't know what else to try...另外抛出"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 ,我只是不知道还能尝试什么......

Thank you谢谢

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);
      }
   }
}

Modifying like this with the private List still throws the 'inaccessible due to its protection level' error.使用private List这样的修改仍然会引发“由于其保护级别而无法访问”错误。 The subscriber class does not throw any errors, though尽管订阅者类不会抛出任何错误

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++;               
    }
}

Last code version最后一个代码版本

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. Looks like you are calling base.listCountLH in a class which inherits from object (ie you have not inherited it from anything - object is the default type).看起来您正在从object 继承的类中调用base.listCountLH (即您没有从任何东西继承它 - object是默认类型)。 You need to inherit from Divergence5min like this:您需要像这样从Divergence5min继承:

     public class Incrementer: Divergence5min
  2. In order to now call ListCountLastH from here, that property should be at least protected in order to access it from an inherited class:现在为了从这里调用ListCountLastH ,该属性至少应该受到保护,以便从继承的类访问它:

     protected List<int> ListCountLastH;
  3. To access non-static members on a class you need to instantiate it first with:要访问类上的非静态成员,您需要先使用以下命令实例化它:

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

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

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