无法从Main

时间:2015-10-20 23:24:46

标签: c# class inheritance methods

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

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

我收到此错误:

  

'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;
    }

2 个答案:

答案 0 :(得分:2)

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

BulkOrder方法仅存在于BulkBook类中,而不存在于Book类中。

答案 1 :(得分:1)

由于BulkOrder中存在BulkBookBook不存在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 }

MyClass