メンバーオブジェクトでコレクションプロパティを使用する

c# collections
メンバーオブジェクトでコレクションプロパティを使用する

「Cells」などのコレクションがある場合、「Cells [1,1]」のように参照すると、そのコレクションのオブジェクトが返されますが、メンバーオブジェクトにはコレクションオブジェクトが持つ特定のプロパティがありません。 メンバーからそのプロパティを呼び出す方法はありますか? 次のように、 `StartPosition`がコレクションのオブジェクトクラスのプロパティであると仮定します。

_
Cells [1,1] .StartPosition
_

または多分

_
Cells [1,1] .ParentCollection.StartPosition
_

  0  0


ベストアンサー

アクセスできるオブジェクトで定義されているプロパティのみを呼び出すことができます。

つまり、コレクションのメソッドを呼び出す場合は、コレクションのコンテンツではなく、コレクションでメソッドを呼び出します。

クラスをそのように設計および構築する場合は、収容するコレクションへの参照を、そこに配置する各アイテムに追加する必要があります。

注意:

表記は、2次元配列の場合、http://msdn.microsoft.com/en-us/library/9b9dty7d.aspx [array notation]です。 配列はコレクションですが、ほとんどの.NETコレクションは、http://www.knowdotnet.com/articles/indexers.html [indexers]を持っている場合でも、配列とは見なされません。

1


それを `Cell`のプロパティでラップするか、返すものにすることができます。 したがって、これを `Cell`クラスに追加します。

public int StartPosition {
    get { return this.ParentCollection.StartPosition; }
}

クラスを変更できない場合は、拡張メソッドを追加できます。例:

public static class CellExtensions {
 public static int GetStartPosition(this Cell cell) {
   return cell.ParentCollection.StartPosition;
 }
}

0


タイトルとURLをコピーしました