在类DiamondListingPage:PageBase中 我尝试创建一个分组枚举属性,其中包含从PageBase派生的不同类型的其他对象。
现在我有单打属性,我不能使用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.SubpagesList.TableView而不是当前的DiamondListingPage.TableView。我还想将foreach用于这个新的集合DiamondListingPage.SubpagesList。
View3x3Tile,CombTableView,TableView它是从PageBase派生的不同类。
答案 0 :(得分:0)
如果我理解正确,您希望拥有可以单独访问的属性的类,而且您希望访问其中一些以集合形式分组的属性,以便您可以在它们上使用 foreach
您可以使用C# iterator method来实现这一目标。 Theese方法使用 yield return 来返回 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;
}
}
然后,您可以访问特定属性并按如下方式迭代它们:
DiamondListingPage x = new DiamondListingPage();
x.View3xTitle = null // accessing individual property
foreach (PageBase p in x.SubPagesList()) {
// do something with p
}
同样在 SubPagesList 方法中,您可以控制将迭代哪些属性。