首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法从Main调用继承类中的方法

无法从Main调用继承类中的方法
EN

Stack Overflow用户
提问于 2015-10-20 23:24:46
回答 2查看 57关注 0票数 0

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

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

我得到了这个错误:

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

这是主程序

代码语言:javascript
运行
复制
Main
{
 BulkBook book2 = new BulkBook(FILLER);
 BulkOrder(book2);
}


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

--这是继承的类结构

代码语言:javascript
运行
复制
 abstract class Publication
 various code
 class Book : Publication
 various code 
 class BulkBook : Book
 various code
 public void BulkOrder() <------ method
    {
        Copies = Copies + BATCH_SIZE;
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-20 23:28:11

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

代码语言:javascript
运行
复制
((BulkBook)book2).BulkOrder();

但是,您可能希望验证book2实际上是一个BulkBook

代码语言:javascript
运行
复制
if (book2 is BulkBook)
{
  ((BulkBook)book2).BulkOrder();
}

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

代码语言:javascript
运行
复制
public static void BulkOrder(BulkBook book2)
{ 
Console.WriteLine(Filler text);
book2.BulkOrder(); //This should now work
}
票数 1
EN

Stack Overflow用户

发布于 2015-10-20 23:26:51

代码语言:javascript
运行
复制
class BulkBook : Book
    ...
    public void BulkOrder()
    {
        Copies = Copies + BATCH_SIZE;
    }

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33248488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档