我已经创建了一个基本的模板程序,帮助我理解接口,类等。
我试图实现的只是简单地调用驻留在继承的类层次结构中的方法。
我得到了这个错误:
'Book‘不包含'BulkOrder’的定义,也找不到接受'Book‘类型的第一个参数的'BulkOrder’的扩展方法(您是缺少使用指令还是程序集引用?)
这是主程序
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;
}发布于 2015-10-20 23:28:11
由于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
}发布于 2015-10-20 23:26:51
class BulkBook : Book
...
public void BulkOrder()
{
Copies = Copies + BATCH_SIZE;
}BulkOrder方法只存在于BulkBook类中,而不是Book类中。
https://stackoverflow.com/questions/33248488
复制相似问题