0

リフレクターを使用してソースをエクスポートしましたが、多くの問題を修正できませんでした。

    EnhancedTypeSubMenu!1.cs(28,27): error CS0305: Using the generic type 'Name.CoreDataTypes.EnhancedTypeSubMenu<T>.MenuItem<TT>' requires 1 type arguments
EnhancedTypeSubMenu!1.cs(86,22): (Related location)
EnhancedTypeSubMenu!1.cs(33,22): error CS0305: Using the generic type 'Name.CoreDataTypes.EnhancedTypeSubMenu<T>.MenuItem<TT>' requires 1 type arguments
\EnhancedTypeSubMenu!1.cs(86,22): (Related location)

これがクラスです。他のクラスでも同じ問題があります。助けていただければ幸いです。

  using System;
using System.Collections.Generic;
using System.Windows.Forms;

public abstract class EnhancedTypeSubMenu<T> : AGeeksToyToolStripMenuItem<EnhancedType<T>>
{
    public EnhancedTypeSubMenu(EnhancedType<T> DataItem, T[] ChoiceItems, string Text) : base(DataItem, Text, null)
    {
        if (ChoiceItems != null)
        {
            foreach (MenuItem<T, T> item in this.MenuItems(ChoiceItems))
            {
                base.DropDownItems.Add(new EnhancedTypeMenuItem<T, T>(DataItem, item));
            }
        }
    }

    public EnhancedTypeSubMenu(EnhancedType<T> DataItem, T[] ChoiceItems, string Text, Control ctrl) : base(DataItem, Text, ctrl)
    {
        foreach (MenuItem<T, T> item in this.MenuItems(ChoiceItems))
        {
            base.DropDownItems.Add(new EnhancedTypeMenuItem<T, T>(DataItem, item, ctrl));
        }
    }

    protected virtual MenuItem<T, T> GetMenuItem(T value)
    {
        return new MenuItem<T, T>(value);
    }

    private List<MenuItem<T, T>> MenuItems(T[] ChoiceItems)
    {
        List<MenuItem<T, T>> list = new List<MenuItem<T, T>>();
        foreach (T local in ChoiceItems)
        {
            list.Add(this.GetMenuItem(local));
        }
        return list;
    }

    public class EnhancedTypeMenuItem<TT> : AGeeksToyToolStripMenuItem<EnhancedType<TT>>
    {
        public bool CheckIfMatched;
        public readonly EnhancedTypeSubMenu<T>.MenuItem<TT> MenuItem;
        public string TranslationCategory;

        public EnhancedTypeMenuItem(EnhancedType<TT> Data, EnhancedTypeSubMenu<T>.MenuItem<TT> menuItem) : base(Data, menuItem.Text, null)
        {
            this.TranslationCategory = "Enhanced Menu";
            this.CheckIfMatched = true;
            this.MenuItem = menuItem;
        }

        public EnhancedTypeMenuItem(EnhancedType<TT> Data, EnhancedTypeSubMenu<T>.MenuItem<TT> menuItem, string translationCategory) : base(Data, menuItem.Text, null)
        {
            this.TranslationCategory = "Enhanced Menu";
            this.CheckIfMatched = true;
            this.MenuItem = menuItem;
            this.TranslationCategory = translationCategory;
        }

        public EnhancedTypeMenuItem(EnhancedType<TT> Data, EnhancedTypeSubMenu<T>.MenuItem<TT> menuItem, Control ctrl) : base(Data, menuItem.Text, ctrl)
        {
            this.TranslationCategory = "Enhanced Menu";
            this.CheckIfMatched = true;
            this.MenuItem = menuItem;
        }

        protected override void OnClick(EventArgs e)
        {
            base.MenuObject.Value = this.MenuItem.Data;
            base.OnClick(e);
        }

        public override void SetMenu()
        {
            base.Checked = this.CheckIfMatched && base.MenuObject.Equals(this.MenuItem.Data);
            this.Text = TranslationManager.Translate(this.TranslationCategory, this.MenuItem.Text.Replace('_', ' '));
            base.SetMenu();
            this.Enabled = !base.Checked;
        }
    }

    public class MenuItem<TT>
    {
        public readonly TT Data;

        public MenuItem(TT data)
        {
            this.Data = data;
        }

        public virtual string Text
        {
            get
            {
                return this.Data.ToString().Replace("__", " / ").Replace("_", " ");
            }
        }
    }
}

}

そして、これがプリントスクリーンです

![ビジュアル スタジオ プリント][1]

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

評判のために画像タグを付けて投稿できません。以前のアカウントを思い出さないでください:/

アップデート //

私はに変更し、それは動作しますが、最後のエラーが1つあります。

private void ChangeStakingType(AGeeksToyToolStripMenuItem>.MenuData newType) { this.StakeBox.StakingType.Value = newType.Data.Value; }

1 つの型引数が必要です エラーです。

Menudata クラスは次のとおりです。

   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://code.google.com/p/agt-betfair-bot/downloads/list

4

3 に答える 3

0

を定義しMenuItem<TT>ました。

MenuItem<T, T>しかし、あなたは文句を言っているものを使っています。

于 2012-05-02T09:54:41.770 に答える
0

これが何らかの検索と置換のエラーであったかどうかはわかりませんが、次のすべてのインスタンスを置換してみてください。

MenuItem<T, T> 

これとともに:

MenuItem<T>

これが問題の原因のようです。これは、元のコンテキストでの型パラメーターの正しい名前のようです。

于 2012-05-02T09:54:54.070 に答える
0

MenuItem は単一の型引数のみを使用します。それがエラーの内容です。

クラスの宣言を参照してください: MenuItem<TT>. したがって、型引数を 1 つだけ渡す必要があります。

于 2012-05-02T09:56:12.030 に答える