通用参数错误

时间:2012-05-02 15:33:01

标签: c# reflector betfair

您好我试图修复此代码以便编译并且无法找到方法

ERROR:

  

Pro \ AGeeksToy \ Controls \ LadderHeader.cs(218,98):错误CS0426:类型名称'menuData'在类型'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

Trunk也可用,但无法发布直接链接。

感谢您的帮助

2 个答案:

答案 0 :(得分:9)

你说你有一个名为ChangeStakingType的私有void返回方法,它接受一个参数。参数的名称为“newType”,参数的类型为AGeeksToyToolStripMenuItem<EnhancedType<StakingTypeEnum>>.menuData。但是程序中没有名为menuData的类型。有一个名为menuData的字段和一个名为MenuData<T>的字段,但没有名为menuData的类型。

答案 1 :(得分:0)

C#区分大小写。

当您调用实际的类menuData时,您正在尝试使用MenuData类。使M大写