class Base
{}
class Sub : Base
{}
void AddNewBase(Base t, LinkedList<Base> list){ ... }
...
{
Sub asub = new Sub();
LinkedList<Sub> asubList = new LinkedList<Sub>();
AddNewBase(asub,asubList) // doesn't work
}
essentiellement, j'ai une fonction d'insertion personnalisé qui prend un nouvel élément et une liste pour le mettre dans, et il fait un peu de choses « tri » pour trouver un bon endroit pour le mettre dans le liste.C# dans les types génériques
problème est, je veux faire cela en fonction des propriétés dans 'Base' donc il serait bon d'avoir une seule fonction qui pourrait le faire pour toutes les listes de sous-types.
Je pense que ce que je genre de veux est:
static void AddNewBase<T>(T t, LinkedList<T> list){ ... }
mais avec une certaine façon de clarifier T comme: « où T est une sous-classe de base »
Il n'y a pas de modèles en C#. – dtb
quelle version? C# 4 et .NET 4 ont des façons de le faire. Les versions précédentes ne l'ont pas. –
Dans ce cas, .NET 4.0 n'aide pas beaucoup, car 'LinkedList' n'est ni covariant ni contravariant. Généralement, le type générique doit être soit "en lecture seule" (par exemple "IEnumerable "), soit "en écriture seule" (par exemple "Action ") pour permettre la covariance ou la contravariance. –
stevemegson