Iva*_*ono 0 c# generics winforms
我有一个基本的通用usercontrol定义为:
public partial class BaseUserControl<T> : UserControl where T : class
{
public event ItemsSelectedEventHandler ItemsSelected;
}
Run Code Online (Sandbox Code Playgroud)
代表:
public class ItemsSelectedEventArgs<T> : EventArgs
{
public IEnumerable<T> Items { get; private set; }
internal ItemsSelectedEventArgs(IEnumerable<T> items)
{
this.Items = items;
}
}
public delegate void ItemsSelectedEventHandler(object sender, ItemsSelectedEventArgs<T> e);
Run Code Online (Sandbox Code Playgroud)
此用户控件的一种方法是一次加载多个记录并将其作为返回IEnumerable<T>.然后,继承控件将是具体类型,并且它们将依次将事件提升给订阅者(即表单).
但是,上面没有编译,我得到以下错误:
找不到类型或命名空间名称"T"(您是否缺少using指令或程序集引用?)
有可能以其他方式实现我需要的东西吗?
当然可以.错误发生在最后一行 - 您尚未将"T"声明为通用.代替:
public delegate void ItemsSelectedEventHandler(object sender, ItemsSelectedEventArgs<T> e);
Run Code Online (Sandbox Code Playgroud)
它应该是:
public delegate void ItemsSelectedEventHandler<T>(object sender, ItemsSelectedEventArgs<T> e);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |