2016-09-15 18 views
0

In class DiamondListingPage:PageBase 私は、PageBaseから派生した異なるタイプの他のオブジェクトを含むグループ化された列挙プロパティを作成しようとしています。C#でさまざまなタイプのプロパティをグループ化するにはどうすればよいですか?

ここで私はシングルプロパティを持っており、foreachを使うことはできません。

public class DiamondListingPage : PageBase 
{ 
     public View3x3Tile View3x3Tile { get; set; } = MyPages.View3x3Tile; 
     public CombTableView CombTableView { get; set; } = MyPages.CombTableView; 
     public TableView TableView { get; set; } = MyPages.TableView; 
} 

私は現在DiamondListingPage.TableView代わりDiamondListingPage.SubpagesList.TableViewのような他のクラスからそれらのコレクションを使用する代わりに、この3つのプロパティ。また、この新しいコレクションDiamondListingPage.SubpagesListにforeachを使用したいと思います。

View3x3Tile、CombTableView、TableView PageBaseから派生した異なるクラスです。

+1

私はあなたが実際に達成したいことを理解していないので、あなたの質問を言い換える必要があると思います。 –

+0

だから、DiamondListingPageでプロパティのforeachループを作成することに決めてしまうまで、すべては大丈夫でした。 すべてのクラスは同じインターフェイスを持ち、特定のメソッドをオーバーライドします。 DiamondListingPageの集約されたサブクラスごとにこのメソッドを呼び出します。 公共オーバーライドボイドVerifyExpectedElementsAreDisplayed(){foreachの (subClassListでサブクラス)サブクラスはテーブルビューを入力した{ subClass.VerifyExpectedElementsAreDisplayed() }:私はまだ理解していない等PageBaseおよび – Tatiana

+1

:PageBase又はCombTableView。プロパティのコレクションが必要な場合は、リフレクションを使用する必要がありますが、実際にそれをしたいとは思っていません。 –

答えて

0

私が正しく理解している場合、あなたはidividuallyにアクセスできるプロパティを持つクラスを持ちたいと思っていますが、コレクションの形でグループ化されたいくつかのものにアクセスしたいのでforeachを使うことができます。

これを実現するにはC# iterator methodを使用できます。これらのメソッドはの戻り値を使用して、IEnumerableの要素を返します。だから、コードは次のようになります

public class DiamondListingPage : PageBase 
{ 
     public View3x3Tile View3x3Tile { get; set; } = MyPages.View3x3Tile; 
     public CombTableView CombTableView { get; set; } = MyPages.CombTableView; 
     public TableView TableView { get; set; } = MyPages.TableView; 

     public IEnumerable<PageBase> SubPagesList() { 
      yield return View3xTitle; 
      yield return CombTableView; 
      yield return TableView; 
     } 
} 

あなたは、特定のプロパティにアクセスし、このようにそれらを反復処理することができますプロパティは繰り返し処理され、あなたがコントロールすることができますSubPagesList方法でも

DiamondListingPage x = new DiamondListingPage(); 
x.View3xTitle = null // accessing individual property 

foreach (PageBase p in x.SubPagesList()) { 
    // do something with p 
} 

関連する問題