2010-08-26 6 views
1

Je suis en train de créer un contrôle utilisateur qui a une source de données, qui peut accepter toute forme de collection, comme List<string> ou string[]contrôle utilisateur avec dénombrable datasource

Si je vérifie pour is IEnumerable il nécessite un type, vérification is IEnumerable<Type> renvoie la valeur false, de même que is IEnumerable<object>

Quelle est la bonne façon de procéder? Je suppose que j'ai mis la propriété DataSource à object et ensuite vérifier sur le setter pour le bon type?

Répondre

1

Vous souhaitez probablement que DataSource soit le non-générique IEnumerable. Tout IEnumerable<T> est également un IEnumerable, qui vous permet d'énumérer la collection sans le typage fort que l'interface générique vous donne. .NET 4.0 présente la covariance, de sorte que vous pouvez affecter un IEnumerable<Dog> à une variable de type IEnumerable<Animal>. Toutefois, si vous souhaitez autoriser n'importe quel type dans la source de données, vous devez toujours créer un DataSource IEnumerable<object>. Vous ne pouvez rien faire avec un IEnumerable<object> que vous ne pouvez pas faire avec un IEnumerable.