我正在尝试使用另一个会话中保存的列表。
但是我收到错误,因为列表模型是在另一个名称空间中生成的
无法转换'System.Collections.Generic.List1[OCC.CartItem]' to type 'System.Collections.Generic.List1[OCC.ShopCheckOut.CartItem]'
List<CartItem> cart = new List<CartItem>();
if (HttpContext.Current.Session["ShoppingCart" + HttpContext.Current.Session.SessionID] != null)
{
cart = (List<CartItem>)HttpContext.Current.Session["ShoppingCart" + HttpContext.Current.Session.SessionID];
}
是一种从名称空间使用模型的方法吗?
答案 0 :(得分:1)
你必须在两者之间进行转换 - 例如使用List<T>.ConvertAll
或LINQ。
基本上这两个类在命名空间中具有相同的短名称是无关紧要的 - 它们实际上是完全不同的类。
当然,如果你很高兴使用实际在会话中的类型,那很好 - 但如果你真的想要List<OCC.ShopCheckOut.CartItem>
,你需要执行转换
答案 1 :(得分:1)
如果
列表模型在另一个名称空间中生成
然后只使用该命名空间中的模型而不是重新声明它:
List<ShopCheckOut.CartItem> cart = new List<ShopCheckOut.CartItem>();
if (HttpContext.Current.Session["ShoppingCart" + HttpContext.Current.Session.SessionID] != null)
{
cart = (List<ShopCheckOut.CartItem>)HttpContext.Current.Session["ShoppingCart" + HttpContext.Current.Session.SessionID];
}
或者相反。
=&GT;在合理的位置(甚至可能在其自己的命名空间内)声明您的CartItem
类,并在其他命名空间中使用它。
答案 2 :(得分:0)
我通过引用其他命名空间解决了这个问题,并使用了那里的cartItem