繁体   English   中英

C#访问层次结构类的子成员

[英]C# Access child members of hierarchy class

如何访问类层次结构的内部成员? 下面有购物车,卡特琳。 我想访问shoppingcart.Product(并且编译器没有看到此内容)。 为了使foreach也能正常工作,我只需要一种最佳方法,如果其他更好的选择(包括类型属性),请告诉我。

public class ShoppingCart : List<CartLine>
{
    public ShoppingCart()
    {

    }
}

public class CartLine
{
    public int CartLineId { get; set; }
    public Product Product { get; set; }
    public int Quantity { get; set; }
}

ShoppingCart shoppingcart = new ShoppingCart();

这不会在Intellisense中显示

shoppingcart.Product

另外,我想让foreach工作

@model ShoppingCart

<tbody>
    @foreach (var item in Model)
    {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.CartLineId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Product.ProductId)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Product.ProductName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Quantity)

ProductCartLine的财产,而不是ShoppingCart的财产。 为了访问该属性,您的shoppingcart变量将需要至少一个或多个可通过indexer属性访问的CartLine对象,而您将访问该特定对象:

var shoppingCart = new ShoppingCart();
shoppingCart[0] = new CartLine { CartLineId = 100, Product = GetTestProduct(), Quantity = 1 };

Console.WriteLine(shoppingCart[0].Product.ToString());

另外,由于ShoppingCart旨在用作模型类型,因此最好不要基于List<T>拥有它。 而是尝试这样的事情:

class ShoppingCart
{
    public IList<CartLine> Items { get; } = new List<CartLine>();

    public ShoppingCart() {}
}

在这种情况下,您将按以下方式访问第一件商品:

shoppingCart.Items[0].Product

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM