2010-08-26 69 views
1

我試圖創建具有數據源,它可以接受任何形式收集用戶的控制,如List<string>string[]用戶控制用枚舉數據源

如果我檢查is IEnumerable那麼它需要一個類型,檢查is IEnumerable<Type>返回false,因爲is IEnumerable<object>

什麼是正確的方法來解決這個問題?我認爲我將DataSource屬性設置爲object,然後檢查設置器是否有正確的類型?

回答

1

您可能需要DataSource爲非通用IEnumerable。任何IEnumerable<T>也是一個IEnumerable,它允許您枚舉集合沒有通用接口爲您提供的強類型。

.NET 4.0引入了協方差,因此您可以將IEnumerable<Dog>分配給IEnumerable<Animal>類型的變量。但是,如果您想允許任何類型的數據源,您仍然需要將DataSource設置爲IEnumerable<object>IEnumerable<object>不能用IEnumerable做任何事情。