インデクサを持つクラスの要素の入れ替えを行おうとAのようなメソッドに値を渡そうとしたのですが、
「プロパティまたはインデクサを out か ref のパラメータとして渡すことはできません。」
と警告を受けてしまいました。
インスタンスとインデックスを渡して変更しようと思いBのようなメソッドを作成したのですが、
「角かっこ [] 付きインデックスを 'T' 型の式に適用することはできません。」
といわれてしまい、やはりうまくいきません。
インデクサを持つクラスでも利用可能なように拡張するためには、これをどう変更したらいいのでしょうか?

// A
public static void Swap<T>(ref T LeftParam, ref T RightParam)
{
  T temp;
  temp = LeftParam;
  LeftParam = RightParam;
  RightParam = temp;
}

// B
public static void Swap<T>(T Target, int LeftIndex, int RightIndex) {
  T temp;
  temp = Target[LeftIndex];
  Target[LeftIndex] = Target[RightIndex];
  Target[RightIndex] = temp;
}