UniRx(Unity用Reactive Extension)を使用して、
カードリストのような画面を作成しようとしています。

個別のボタンであれば、ボタンと対になる処理を書けば良いので、
クリック通知があったらSubscribeに〜する。といった書き方ができますが
リスト構造の場合、ボタンが押されただけではどこのインデックスのボタンが
押されかがわかりません。

.netの新しいバージョンであればObeservableCollectionなどが使えそうなのですが、
Unityでは使用できませんでした。

MVPパターンで作成しているので、
データのやり取りはあくまでModel側がおこない
イベントやアクションなどはView側が受け持って
Model側とView側のやり取りは、Presenter側に書きます。

ですので、どこのインデックスのボタンが押されたかは
View側に書きたいのですが、どのように関連付ければ良いのかがわかりません。

考え方やサンプルソースなどを教えていただけないでしょうか?

追記:IndexOfを使って自分自身を検索するようにしようとしたのですが、
   ラムダ式の中で自分自身を渡す方法がわからず。
   IObservable<Unit>のUnitではなく、IObservable<Unit>を渡したい

/// <summary>
/// ボタンのリスト
/// </summary>
public List<Button> ButtonList = new List<Button>();
/// <summary>
/// ボタンイベント通知リスト
/// </summary>
List<IObservable<Unit>> abc = new List<IObservable<Unit>>();
/// <summary>
/// ボタン通知のハッシュリスト
/// </summary>
List<int> abcHash = new List<int>();

void Start () 
{
    abc.Add(ButtonList[0].OnClickAsObservable());
    abcHash.Add(abc[0].GetHashCode());

    abc.Add(ButtonList[1].OnClickAsObservable());
    abcHash.Add(abc[1].GetHashCode());

    abc.Add(ButtonList[2].OnClickAsObservable());
    abcHash.Add(abc[2].GetHashCode());

    abc.Add(ButtonList[3].OnClickAsObservable());
    abcHash.Add(abc[3].GetHashCode());

    foreach(IObservable<Unit> test in abc)
    {
        test.Subscribe(
            _ => ButtonClicked(abcHash.IndexOf(test自身のハッシュ値を取得したい)))
            );
    }
}

private void ButtonClicked(int index)
{
    Debug.Log("index=" + index.ToString());
}