C#反射器后的通用类型错误
我导出了一个带有反射器的源,我修复了很多问题,但还有一个问题我无法解决C#反射器后的通用类型错误,c#,.net,generics,reflector,C#,.net,Generics,Reflector,我导出了一个带有反射器的源,我修复了很多问题,但还有一个问题我无法解决 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 loc
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)
增强型子菜单!1.cs(28,27):错误CS0305:使用泛型类型“Name.CoreDataTypes.EnhancedTypeSubMenu.MenuItem”需要1个类型参数
增强型子菜单!1.cs(86,22):(相关位置)
增强型子菜单!1.cs(33,22):错误CS0305:使用泛型类型“Name.CoreDataTypes.EnhancedTypeSubMenu.MenuItem”需要1个类型参数
\增强型子菜单!1.cs(86,22):(相关位置)
这是一节课,我在另一节课上也有同样的问题。非常感谢您的帮助
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("_", " ");
}
}
}
}
使用系统;
使用System.Collections.Generic;
使用System.Windows.Forms;
公共抽象类增强型子菜单:AGEEKStolyToolStripMenuItem
{
公共增强型子菜单(增强型数据项,T[]选项项,字符串文本):基(数据项,文本,null)
{
if(ChoiceItems!=null)
{
foreach(此菜单项中的菜单项(选择项))
{
添加(新的增强型TypeMenuItem(DataItem,item));
}
}
}
公共增强型子菜单(增强型数据项,T[]选项项,字符串文本,控件ctrl):基本(数据项,文本,ctrl)
{
foreach(此菜单项中的菜单项(选择项))
{
添加(新的增强型TypeMenuItem(DataItem,item,ctrl));
}
}
受保护的虚拟菜单项GetMenuItem(T值)
{
返回新的菜单项(值);
}
私有列表菜单项(T[]个选项项)
{
列表=新列表();
foreach(选择项中的T本地)
{
list.Add(this.GetMenuItem(本地));
}
退货清单;
}
公共类增强的TypeMenuItem:AgeekstolyToolStripMenuItem
{
公共布尔校验匹配;
public readonly EnhancedTypeSubMenu.MenuItem MenuItem;
公共字符串TranslationCategory;
public EnhancedTypeMenuItem(EnhancedTypeData,EnhancedTypeSubMenu.MenuItem MenuItem):基础(数据,MenuItem.Text,null)
{
this.TranslationCategory=“增强菜单”;
this.CheckIfMatched=true;
this.MenuItem=MenuItem;
}
public EnhancedTypeMenuItem(EnhancedTypeData,EnhancedTypeSubMenu.MenuItem MenuItem,string translationCategory):基本(数据,MenuItem.Text,null)
{
this.TranslationCategory=“增强菜单”;
this.CheckIfMatched=true;
this.MenuItem=MenuItem;
this.TranslationCategory=TranslationCategory;
}
公共增强型MenuItem(增强型数据,增强型子菜单。MenuItem MenuItem,控件ctrl):基本(数据,MenuItem.Text,ctrl)
{
this.TranslationCategory=“增强菜单”;
this.CheckIfMatched=true;
this.MenuItem=MenuItem;
}
受保护的覆盖void OnClick(EventArgs e)
{
base.MenuObject.Value=this.MenuItem.Data;
base.OnClick(e);
}
公共覆盖无效设置菜单()
{
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;
}
}
公共类菜单项
{
公共只读TT数据;
公共菜单项(TT数据)
{
这个。数据=数据;
}
公共虚拟字符串文本
{
收到
{
返回此.Data.ToString();
}
}
}
}
}
这是一个打印屏幕
!![visual studio打印][1]
由于声誉原因,无法使用图像标签发布,请不要忘记我以前的帐户:/
更新//
我将更改为,这样做有效,但我还有最后一个错误
私有void changeType(ageekstolyToolStripMenuItem>.MenuData newType)
{
this.StakeBox.locketype.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;
}
}
}
namespace agekstoy.CoreDataTypes
{
使用制度;
使用System.Windows.Forms;
公共抽象类AGEEKSTOOLStripMenuItem:ToolStripMenuItem,AGEEKSTOOLStripMenuItem
{
公共鼠标按钮LastMouseButton;
公共MenuData MenuData;
public static readonly voidEvents,右键单击参数;
静态AgeekstolyToolStripMenuItem()
{
AGEEKSTOOLSTRIPMENUITEM.RIGHTCLIKED=新的VoidEventWithParam();
}
受保护的AGEEKStolyToolStripMenuItem(T obj,字符串文本):此(obj,文本,null)
{
}
受保护的AGEEKStolyToolStripMenuItem(对象、字符串文本、控件ctrl)
{
base.DropDown.ImageList=IconManager.m_ImageList;
this.menuData=新的menuData(obj,ctrl);
this.Text=文本;
}
受保护的覆盖无效处置(布尔处置)
{
base.DropDown.ImageList=null;
基地。处置(处置);
}
受保护的覆盖void OnClick(EventArgs e)
{
if(this.MenuControl!=null)
{
this.MenuControl.Refresh();
}
base.OnClick(e);
if(this.LastMouseButton==MouseButtons.Right)
{
AgeekstolyToolStripMenuItem.RightClicked.TriggerEvent(this.menuData);
}
}
MouseEventArgs e上的受保护覆盖无效(MouseEventArgs e)
{
this.LastMouseButton=e.按钮;
base.OnMouseDown(e);
}
公共虚拟void SetMenu()
{
this.LastMouseButton=MouseButtons.Left;
if(this.MenuControl!=null)
{
MenuItem<T, T>
MenuItem<T>