2009-09-20 78 views
0

在我的项目,我想TE创建自己的DataGrid,但我不从至极对象知道我要创建TE的列。创建集合<T>

所以我想一个属性:

private List<T> DataSource 

谁的人有任何想法如何解决这一问题?

+2

...修复什么?你能更清楚地问你的问题吗? – JoshJordan 2009-09-20 17:11:15

回答

2

您没有提供非常多的代码或解释,但我猜你在该行获得有关泛型参数编译错误。你需要让你的类声明一般也接受一个参数T.像这样:

public class MyDataGridWrapper<T> : DataGrid 
{ 

    private List<T> DataSource; 
    ... 
    ... 

} 

你真的没有规定什么是错的,所以我只是在两个你是错误的猜测得到和实际错误。

+0

我想设置数据源,以便我可以为我的网格创建列 示例: 列表 items = new列表(); 数据源=项目; 我如何知道我的List <>中的对象是虚拟的?所以我可以为每个属性创建列(用反射) – Jordy 2009-09-20 17:29:19

+0

你知道这是一个虚拟的,因为它是一个列表()。你不能只是有一个列表没有从任何地方得到T。 – womp 2009-09-20 17:31:39

+0

事实是,我也将创造与反思的对象,所以我西港岛线不知道它是什么类型时,我写我的代码.. 所以我想做的事 - >数据源=列出(); ,然后无需自动生成我的列。 1)第一个问题是,我怎样才能使我的数据源为列表 2)第二个问题:即使当我的列表中没有任何项目时,我如何获得列表中的我的对象的类型(空列表,数= 0).. – Jordy 2009-09-20 17:58:12

-1

为什么不把它作为“对象”,并投它?

+0

如果你走这条路,你就失去类型检查。 – blparker 2009-09-20 17:21:51

+0

我试过是作为对象,但不知道什么时候我想让我的列,我怎么能得到在列表中的类型? 例如: 列表数据源=新列表() DataSource.Add(新的虚拟概率(){名称= “测试”,值= 1}; 我怎样才能知道在我的函数createColumns这些对象在我的列表是Dummy类的对象吗?当列表为空时(.Count = 0)该怎么办? – Jordy 2009-09-20 17:27:05

+0

类型安全性:编译器会为您找到类型不匹配的情况,而且您不必输入((SomeClassName )...)施放。 – 2009-09-20 17:30:13

0

查找到IBindingList<T>.此接口的目的是为将在绑定使用名单。你的属性应该是这种类型,然后,任何实现这种类型的东西都可以用来绑定到你的网格。