我是接口和抽象类的新手.我想创建几个接口来定义购物车系统对象的核心方法和变量.然后我想创建实现核心功能的抽象类.这个想法是,其他类可以以不同的方式用于不同的项目.
这是我的(简化)界面:
public interface ICart { ... ListCartItems { get; set; } } public interface ICartItem { int ProductId { get; set; } int Quantity { get; set; } }
这是我的抽象Cart类(再次,只显示相关的行)实现ICart:
public abstract class Cart : ICart { private List_cartItems = new List (); public List CartItems { get { return _cartItems; } } }
我的CartItem类实现了ICartItem:
public abstract class CartItem : ICartItem { ... }
当我尝试编译类时,我得到一个错误说:'Cart'没有实现接口成员'CartItems'.'Cart.CartItems'无法实现'ICart.CartItems',因为它没有匹配的返回类型System.Collections.Generic.List
我认为这里的想法是接口可以由许多类实现,这些类以不同的方式执行核心功能并添加新方法等.为什么我的接口需要知道实际使用的是什么类,同样长因为该类实际上正确地实现了接口?
您需要在C#2中使用泛型来实现:
public interface ICartwhere T : ICartItem { // ... List CartItems { get; set; } } public abstract class Cart : ICart { // ... public List CartItems { get; set; } }