如何在 C# 中对不同类型的属性进行分组?
How can I group properties of different types in C#?
在 class 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;
}
我想使用从其他 class 中收集的这三个属性,例如 DiamondListingPage.SubpagesList.TableView 而不是当前的 DiamondListingPage.TableView。而且我还想将 foreach 用于这个新集合 DiamondListingPage.SubpagesList.
View3x3Tile、CombTableView、TableView 是不同的class派生自 PageBase。
如果我理解正确的话,您希望 class 具有您可以单独访问的属性,但您也希望访问其中一些以集合形式分组的属性,以便您可以使用 foreach 在他们身上。
您可以使用 C# iterator method 来实现。这些方法使用 yield return 到 IEnumerable 的 return 个元素。所以代码看起来像这样:
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 方法中,您可以控制迭代哪些属性。
在 class 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;
}
我想使用从其他 class 中收集的这三个属性,例如 DiamondListingPage.SubpagesList.TableView 而不是当前的 DiamondListingPage.TableView。而且我还想将 foreach 用于这个新集合 DiamondListingPage.SubpagesList.
View3x3Tile、CombTableView、TableView 是不同的class派生自 PageBase。
如果我理解正确的话,您希望 class 具有您可以单独访问的属性,但您也希望访问其中一些以集合形式分组的属性,以便您可以使用 foreach 在他们身上。
您可以使用 C# iterator method 来实现。这些方法使用 yield return 到 IEnumerable 的 return 个元素。所以代码看起来像这样:
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 方法中,您可以控制迭代哪些属性。