不能在从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;
}
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
}