具有可枚举数据源的用户控件

时间:2010-08-26 13:45:34

标签: c# asp.net datasource

我正在尝试创建一个具有DataSource的用户控件,该控件可以接受任何形式的集合,例如List<string>string[]

如果我检查is IEnumerable,那么它需要一个类型,检查is IEnumerable<Type>会返回false,is IEnumerable<object>

正确的方法是什么?我假设我将DataSource属性设置为object,然后检查setter是否有正确的类型?

1 个答案:

答案 0 :(得分:1)

您可能希望DataSource成为非通用IEnumerable。任何IEnumerable<T>也是IEnumerable,它允许您枚举集合,而无需通用界面为您提供的强类型。

.NET 4.0引入了协方差,因此您可以将IEnumerable<Dog>分配给IEnumerable<Animal>类型的变量。但是,如果要允许数据源中的任何类型,则仍需要将DataSource设为IEnumerable<object>。使用IEnumerable<object>无效的IEnumerable,您无法执行任何操作。