以下はPropertyInfoを使ってインデクサの値を取得・設定する例です。 C#では特に指定しない場合、インデクサの名前はデフォルトでItemとなりますが、IndexerName属性によって変更可能である点に注意してください。

PropertyInfoを使ってインデクサの値を取得・設定する
using System;
using System.Reflection;

class C {
  //[System.Runtime.CompilerServices.IndexerName("Item")]
  public int this[int index] {
    get { return arr[index]; }
    set { arr[index] = value; }
  }

  private int[] arr = new int[2];
}

class Sample {
  static void Main()
  {
    C inst = new C();

    inst[0] = 42;
    inst[1] = 0;

    Type t = inst.GetType();

    // インデクサItemのPropertyInfoを取得する
    PropertyInfo p = t.GetProperty("Item");

    // インデクサのインデックス1に値3を設定する
    p.SetValue(inst, 3, new object[] {1});

    // インデクサからインデックス0と1の値を取得する
    Console.WriteLine(p.GetValue(inst, new object[] {0}));
    Console.WriteLine(p.GetValue(inst, new object[] {1}));
  }
}
実行結果
42
3