如何访问类层次结构的内部成员?下面有购物车,卡特琳。我想访问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)
答案 0 :(得分:1)
Product
是CartLine
而不是ShoppingCart
的属性。为了访问该属性,您的shoppingcart
变量将需要至少一个或多个CartLine
对象,这些对象可以通过indexer属性进行访问,而您将访问该特定对象:< / p>
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