如何通过MyEvents函数实现pass TType值
本文关键字:pass TType 实现 函数 何通过 MyEvents | 更新日期: 2023-09-27 18:06:51
在此代码中显示MyEvents的一个错误。发生了什么?以及如何通过MyEvents函数实现传递TType值
public class MListBox : ListBox
{
public Type TType { get; set; }
public void LoadList()
{
MyEvents<TType , TType >.LoadList("getList").ForEach(w => this.Items.Add(w));
}
}
public void main(string[] args)
{
MListBox mb= new MListBox();
mb.TType = typeof(STOCK);
mb.LoadList();
}
public static class MyEvents<T,M> where T : class where M : class
{
public static M m;
public static T t;
public static List<objectCollection> LoadList(string _method)
{
m = Activator.CreateInstance<M>();
MethodInfo method = typeof(M).GetMethod(_method);
List<objectCollection> ret = (List<objectCollection>)method.Invoke(m, null);
return ret;
}
}
public class STOCK()
{
}
谢谢你,
您正在进入泛型的世界。使用泛型类型参数T,您可以编写其他客户端代码可以使用的单个类,而不会产生运行时强制类型转换或装箱操作的成本或风险。
泛型类,如MListBox<T>
,不能按原样使用,因为它不是真正的类型。因此,要使用MListBox<T>
,必须通过在尖括号内指定类型参数来声明和实例化构造类型。
如
MListBox<YourClass> a = new MListBox<YourClass>();
其中YourClass是你想传入的类型参数
关于泛型的更多信息
http://msdn.microsoft.com/en-us/library/512aeb7t.aspx public class MListBox<T, M> : ListBox
where T : class
where M : class, new()
{
public void LoadList()
{
MyEvents<T, M>.LoadList("getList").ForEach(w => this.Items.Add(w));
}
}
public void main(string[] args)
{
MListBox<object,STOCK> mb = new MListBox<object,STOCK>();
mb.LoadList();
}
public static class MyEvents<T, M>
where T : class
where M : class, new()
{
public static M m;
public static T t;
public static List<T> LoadList(string _method)
{
m = new M();
MethodInfo method = typeof(M).GetMethod(_method);
List<T> ret = (List<T>)method.Invoke(m, null);
return ret;
}
}
在xaml
中使用的包装类
class StockListBox : MListBox<object,STOCK>
{
}
在xaml as中使用,其中local是您的命名空间
<local:StockListBox />