从其他名称空间转换错误

时间:2011-02-16 11:15:18

标签: c# list model casting

我正在尝试使用另一个会话中保存的列表。

但是我收到错误,因为列表模型是在另一个名称空间中生成的

无法转换'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];
        }

是一种从名称空间使用模型的方法吗?

3 个答案:

答案 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