2009-12-08 11 views
0

J'ai 2 objets Projet et Licence. Ils héritent tous deux de l'objet Entity (abstract class).Comment créer une méthode d'extension flexible pour des listes génériques?

Maintenant, j'ai une méthode d'extension "GetNewId" qui contient la logique pour obtenir l'ID suivant dans une liste d'entités.

J'ai défini cette méthode comme une méthode d'extension, mais le problème est que List (qui est également une liste d'entités) et List ne voient pas cette méthode.

Je suppose que ce problème se produira avec n'importe quelle liste générique contenant des objets qui héritent de la même classe de base.

Existe-t-il une solution à ce problème?

modifier: travailler en C#

+1

De quel langage de programmation parlez-vous? – Avi

Répondre

3

Quelle classe/interface est votre méthode GetNewId() une extension?

Si vous le faites une extension de IEnumerable<T> - où T est limitée à tirer de votre Entity classe de base - vous devriez être en mesure d'utiliser la méthode d'extension sur toute collection comme classe contenant des objets à base Entity:

public static GetNewId<T>(this IEnumerable<T> sequence) where T : Entity { 
    // your implementation of GetNewId here 
} 

La méthode Cast (à partir de System.Linq) est également définie sur IEnumerable<T> (mais sur tout type T, aucune restriction), vous pouvez donc l'utiliser sur votre instance licenses.

+0

Votre exemple contenait 'Tedu.LicenseWebsite.Core.Model.Entity'. Vous connaissez l'instruction 'using' et les espaces de noms ...? – peSHIr

Questions connexes