je tente de déclarer et utiliser une interface comme ceci:mal à définir un IList <T> où T est une interface générique
public interface IItem<T>
{
string Name { get; set; }
T Value { get; set; }
}
Cela fonctionne bien jusqu'à ce que je tente de créer une liste de ces articles. Cela ne compile pas:
public interface IThing
{
string Name { get; }
IList<IItem<T>> ThingItems { get; }
}
donc je ne suis pas certain où le problème est. La valeur des éléments n'est pas définie avant l'exécution, et j'ai besoin d'avoir des collections des éléments. Je me dis que c'est un modèle assez standard, mais je ne vois pas où je suis en train de tomber.
Dans votre exemple, vous voulez que IItem ait toujours la propriété value, retourne simplement l'objet. –
Cela dépend si vous en avez besoin. Peut-être voudriez-vous aussi exposer le type de l'élément (par exemple, quel type (T) renvoie), etc. S'il existe des méthodes non génériques sur l'interface (comme, ProcessItem), vous n'avez probablement pas besoin de la valeur de l'objet car ils seront en mesure d'utiliser la valeur générique dans leur mise en œuvre. – Lucero
Cela vient aussi près que je pense que je peux. Je n'aurais jamais l'interface finale que vous avez ici IThing que les éléments varient indépendamment des choses. –