2010-02-21 3 views
3

Fondamentalement, j'utilise un ORM (en particulier LLBLGen) qui crée des objets d'entité pour toutes mes tables. Tous ces types d'entités héritent d'une classe de base (ou vraiment un ensemble d'entre eux). Je veux créer une méthode d'extension qui accepte une liste de la classe de base et retourne une chaîne de caractères mais je veux transmettre des types hérités sans lancer explicitement.Utilisation de listes génériques de types de base et de types hérités

Par exemple, j'ai une fonction comme:

string GetString(List<EntityBase2> list); // also tried List<IEntityCore>, which the base class implements 

Et je veux transmettre quelque chose comme ceci:

List<ProductEntity> products = ... // populate it 

string v = GetString(products); 

Mais je reçois des erreurs du compilateur.

Comment puis-je accomplir la création de cette méthode d'assistance. Je veux éviter de lancer si je peux mais si c'est le meilleur moyen alors au moins je pourrais avoir une confirmation à ce sujet.

Répondre

3

essayez ceci:

string GetString<T>(List<T> list) where T : IEntityCore {...} 

cette façon, vous obtenez une méthode générique qui prend une liste d'objets qui mettent en œuvre IEntityCore. il n'y a pas besoin de lancer et le compilateur s'assurera que vous passez dans les bons objets. fonctionne à partir de framework 2.0.

Questions connexes