A titre d'exemple, je vais utiliser les classes SqlDataReader et DataRow : elles définissent toutes deux l'indexeur suivant :
public object this[int columnIndex] { get; set; }
Quel est le type de plus petit dénominateur commun à utiliser comme type de paramètre de la méthode, de sorte que les deux (et toute autre classe implémentant le même indexeur) puissent être passés et utilisés de la même manière, par ex :
void DoSomething(??? indexedObject)
{
string foo = indexedObject[0].ToString();
// let's ignore the presence of ToString()
// for the purpose of this question
}
Est-ce que c'est object
? Que se passe-t-il si l'objet indexé ne dérive pas de object
(Je pense que c'est possible, même si c'est très peu probable).
Si cela a de l'importance, je cible .NET 3.5.
Modifier : Je cherche une application du contrat qui oblige les appelants à passer des objets qui implémentent ledit indexeur.