J'ai une interface générique en C#, et presque toujours je l'utilise avec l'un des types. Je veux créer une interface non générique pour ce type et l'utiliser.Interface non-générique comme synonyme de générique
Disons que j'ai le code suivant:
public interface IMyGenericList<out T> where T : IItem
{
IEnumerable<T> GetList();
}
public class MyList<T> : IMyGenericList<T> where T : IItem
{
public IEnumerable<T> GetList()
{
return null;
}
}
il fonctionne bien. La plupart du temps j'ai besoin IMyGenericList<IItem>
, donc j'essayer les éléments suivants:
public interface IMyItemsList : IMyGenericList<IItem>
{
}
mais je ne peux pas faire MyList mettre en œuvre IMyItemsList pour une raison quelconque. Le code suivant renvoie une erreur
public class MyList<T> : IMyItemsList, IMyGenericList<T> where T : IItem
{
public IEnumerable<T> GetList()
{
return null;
}
}
disant que IEnumerable<IItem> is not implemented
.
Pourquoi est-ce que/que puis-je faire avec ceci? Merci.
Ok, grâce à vos réponses j'ai compris qu'il est impossible de le faire exactement comme je le voulais initialement. Je signalerai une autre question pourquoi cela est impossible :) voici: One function implementing Generic and non-generic interface
Où est votre méthode 'GetEnumerator'? – leppie
Je n'implémente pas IEnumerable, je retourne juste une valeur avec ce type – Shaddix
"La plupart du temps j'ai besoin de' IMyGenericList '". Vous ne pouvez l'avoir que grâce à votre contrainte de type. –