comment est-il possible de savoir si un objet implémente un indexeur ?, je dois partager une logique pour un DataRow et un IDataReader, mais ils ne partagent aucune interface.Question sur les indexeurs et/ou génériques
J'ai essayé aussi avec des génériques mais je ne sais pas quelle restriction devrais-je mettre sur la clause where.
public class Indexer {
// myObject should be a DataRow or a IDataReader
private object myObject;
public object MyObject {
get { return myObject; }
set { myObject = value; }
}
// won't compile, myObject has no indexer
public object this[int index] {
get { return myObject[index]; }
set { myObject[index] = value; }
}
public Indexer(object myObject) {
this.myObject = myObject;
}
}
public class Caller {
void Call() {
DataRow row = null;
IDataReader reader = null;
var ind1 = new Indexer(row);
var ind2 = new Indexer(reader);
var val1 = ind1[0];
var val2 = ind1[0];
}
}
Mais je ne peux pas faire en sorte que DataRow implémente mon interface –
Voir la mise à jour de la réponse. –
je ne l'ai pas downvote, FYI, désolé –