我已经创建了一个基本的模板程序,帮助我理解接口,类等等。
我想要实现的只是调用驻留在继承的类层次结构中的方法。
我收到此错误:
'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;
}
答案 0 :(得分:2)
class BulkBook : Book
...
public void BulkOrder()
{
Copies = Copies + BATCH_SIZE;
}
BulkOrder
方法仅存在于BulkBook
类中,而不存在于Book
类中。
答案 1 :(得分:1)
由于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
}
:
MyClass