2012-05-02 1 views
-3

Привет им пытаются исправить этот код, чтобы скомпилировать и не могу найти способGeneric Аргумент ошибки

ОШИБКА:

Pro\AGeeksToy\Controls\LadderHeader.cs(218,98): error CS0426: The type name 'menuData' does not exist in the type 'AGeeksToy.CoreDataTypes.AGeeksToyToolStripMenuItem>'

это ошибка.

private void ChangeStakingType(AGeeksToyToolStripMenuItem<EnhancedType<StakingTypeEnum>>.menuData newType) 
    { 
     this.StakeBox.StakingType.Value = newType.Data.Value; 
    } 

AGeeksToyToolStripMenuItem код класса:

namespace AGeeksToy.CoreDataTypes 
{ 
    using System; 
    using System.Windows.Forms; 

    public abstract class AGeeksToyToolStripMenuItem<T> : ToolStripMenuItem, AGeeksToyMenu 
    { 
     public MouseButtons LastMouseButton; 
     public MenuData<T> menuData; 
     public static readonly VoidEventWithParam<MenuData<T>> RightClicked; 

     static AGeeksToyToolStripMenuItem() 
     { 
      AGeeksToyToolStripMenuItem<T>.RightClicked = new VoidEventWithParam<MenuData<T>>(); 
     } 

     protected AGeeksToyToolStripMenuItem(T obj, string text) : this(obj, text, null) 
     { 
     } 

     protected AGeeksToyToolStripMenuItem(T obj, string text, Control ctrl) 
     { 
      base.DropDown.ImageList = IconManager.m_ImageList; 
      this.menuData = new MenuData<T>(obj, ctrl); 
      this.Text = text; 
     } 

     protected override void Dispose(bool disposing) 
     { 
      base.DropDown.ImageList = null; 
      base.Dispose(disposing); 
     } 

     protected override void OnClick(EventArgs e) 
     { 
      if (this.MenuControl != null) 
      { 
       this.MenuControl.Refresh(); 
      } 
      base.OnClick(e); 
      if (this.LastMouseButton == MouseButtons.Right) 
      { 
       AGeeksToyToolStripMenuItem<T>.RightClicked.TriggerEvent(this.menuData); 
      } 
     } 

     protected override void OnMouseDown(MouseEventArgs e) 
     { 
      this.LastMouseButton = e.Button; 
      base.OnMouseDown(e); 
     } 

     public virtual void SetMenu() 
     { 
      this.LastMouseButton = MouseButtons.Left; 
      if (this.MenuControl != null) 
      { 
       base.Visible = this.MenuControl.Visible; 
       this.Enabled = this.MenuControl.Enabled; 
      } 
      foreach (ToolStripItem item in base.DropDownItems) 
      { 
       if (item is AGeeksToyMenu) 
       { 
        (item as AGeeksToyMenu).SetMenu(); 
       } 
      } 
     } 

     public T Menu_Data 
     { 
      get 
      { 
       return this.MenuObject; 
      } 
     } 

     protected Control MenuControl 
     { 
      get 
      { 
       return this.menuData.Control; 
      } 
     } 

     protected T MenuObject 
     { 
      get 
      { 
       return this.menuData.Data; 
      } 
      set 
      { 
       this.menuData.Data = value; 
      } 
     } 


     public class MenuData<T> 
     { 
      public System.Windows.Forms.Control Control; 
      public T Data; 

      public MenuData(T obj, System.Windows.Forms.Control ctrl) 
      { 
       this.Data = obj; 
       this.Control = ctrl; 
      } 
     } 
    } 
} 

http://i.stack.imgur.com/XfUIA.png

Ошибки компиляции.

Если кто-нибудь может загрузить проект или проверить источник его доступный здесь

Download Link Google Code

Ствол слишком доступны, но не могу после прямая связь пока.

С благодарностью за любую помощь

+2

Пожалуйста, сделайте свою отладку, а затем вернитесь к SO ... – Mahm00d

+0

Этот один из самых бесполезных вопросов о stackoverflow. – gdoron

ответ

9

Вы говорите, что у вас есть частный метод возврата void с именем ChangeStakingType, который принимает один параметр. Имя параметра - «newType», а тип параметра - AGeeksToyToolStripMenuItem<EnhancedType<StakingTypeEnum>>.menuData. Но в вашей программе нет типа с именем menuData. Существует поле под названием menuData и тип под названием MenuData<T>, но нет такого типа, как menuData.

0

C# чувствителен к регистру.

Вы пытаетесь использовать класс menuData, когда фактический класс называется MenuData. Сделайте это M uppercase