不能在从Main继承的类中调用方法

本文关键字:调用 方法 继承 Main 不能 | 更新日期: 2023-09-27 18:18:32

我创建了一个基本的模板程序,帮助我理解接口、类等。

我想要实现的是简单地调用驻留在继承类层次结构中的方法。

我得到这个错误:

'Book'不包含'BulkOrder'的定义,也找不到'BulkOrder'接受'Book'类型的第一个参数的扩展方法(您是否缺少using指令或程序集引用?)

这是主程序

Main
{
 BulkBook book2 = new BulkBook(FILLER);
 BulkOrder(book2);
}

public static void BulkOrder(Book book2)
{ 
Console.WriteLine(Filler text);
book2.BulkOrder(); <------- belongs in inherited class
}

是继承的类结构

 abstract class Publication
 various code
 class Book : Publication
 various code 
 class BulkBook : Book
 various code
 public void BulkOrder() <------ method
    {
        Copies = Copies + BATCH_SIZE;
    }

不能在从Main继承的类中调用方法

class BulkBook : Book
    ...
    public void BulkOrder()
    {
        Copies = Copies + BATCH_SIZE;
    }

BulkOrder方法只存在于BulkBook类中,不存在于Book类中

由于BulkOrder存在于BulkBook而不是Book中,您需要将book2转换为BulkBook:

((BulkBook)book2).BulkOrder();

然而,您可能希望验证book2实际上是BulkBook:

if (book2 is BulkBook)
{
  ((BulkBook)book2).BulkOrder();
}

另一种解决方案是让方法接受类型BulkBook而不是Book:

public static void BulkOrder(BulkBook book2)
{ 
Console.WriteLine(Filler text);
book2.BulkOrder(); //This should now work
}