当前位置:  开发笔记 > 编程语言 > 正文

如何将接口方法的返回类型定义为另一个接口?

如何解决《如何将接口方法的返回类型定义为另一个接口?》经验,为你挑选了1个好方法。

我是接口和抽象类的新手.我想创建几个接口来定义购物车系统对象的核心方法和变量.然后我想创建实现核心功能的抽象类.这个想法是,其他类可以以不同的方式用于不同的项目.

这是我的(简化)界面:

public interface ICart
{
    ...
    List CartItems { 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 .

我认为这里的想法是接口可以由许多类实现,这些类以不同的方式执行核心功能并添加新方法等.为什么我的接口需要知道实际使用的是什么类,同样长因为该类实际上正确地实现了接口?



1> Tamas Czineg..:

您需要在C#2中使用泛型来实现:

public interface ICart where T : ICartItem
{
    // ...
    List CartItems { get; set; }
}

public abstract class Cart : ICart
{
    // ...
    public List CartItems { get; set; }
}

推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有