Si j'ai une interface générique avec un couple de mettre en œuvre des classes telles que:Liste des interfaces génériques
public interface IDataElement<T>
{
int DataElement { get; set; }
T Value { get; set; }
}
public class IntegerDataElement : IDataElement<int>
{
public int DataElement { get; set; }
public int Value { get; set; }
}
public class StringDataElement : IDataElement<String>
{
public int DataElement { get; set; }
public String Value { get; set; }
}
Est-il possible de passer une collection des classes de mise en œuvre de types différents, sans avoir à recourir à passer comme objet.
Il ne semble pas possible de définir des valeurs de retour comme
public IDataElement<T>[] GetData()
ou
public IDataElement<object>[] GetData()
Toutes les suggestions?
J'avais essayé la classe de base non générique mais elle perd le détail de la propriété Value – benPearce
@benPearce: Mais vous ne pouvez pas l'utiliser quand même, car vous ne connaissez pas le type impliqué. Essayez de montrer comment vous utiliseriez le code, et nous pourrons mieux vous conseiller. –
J'ai fini par descendre l'interface de base non générique, avec les méthodes GetValue() et SetValue (object) de l'objet. Travailler jusqu'à maintenant – benPearce