C# 类不识别其他类中的方法
我是一名新的C#程序员,我想知道为什么我得到的C# 类不识别其他类中的方法,c#,methods,C#,Methods,我是一名新的C#程序员,我想知道为什么我得到的对象不包含“methodName”的定义,并且没有扩展方法“methodName”,接受类型为“object”的第一个参数时会发现错误。我不知道为什么这两个类似乎没有联系 下面是包含我的方法定义的类: namespace Simple_Restaurant_Simulation { class ChickenOrder { public int quantity; public int GetQuant
对象不包含“
methodName”的定义,并且没有扩展方法“
methodName”,接受类型为“object”的第一个参数时会发现错误。我不知道为什么这两个类似乎没有联系
下面是包含我的方法定义的类:
namespace Simple_Restaurant_Simulation
{
class ChickenOrder
{
public int quantity;
public int GetQuantity(int ChickenQuantity)
{
this.quantity = ChickenQuantity;
return quantity;
}
public void CutUp()
{
return;
}
public void Cook()
{
return;
}
}
}
以及调用方法:
namespace Simple_Restaurant_Simulation
{
class Employees
{
public dynamic NewRequest(int Quantity, string MenuItem)
{
if (MenuItem == "Chicken")
{
return new ChickenOrder();
}
else
{
return new EggOrder();
}
}
public dynamic CopyRequest(dynamic MenuItem)
{
/*TODO:
if(existing order){
return existing order;
}
else { return "Whaddaya think I am, a miracle worker?"};
*/
return null;
}
public int Inspect(object Order)
{
int InspectResult = 0;
return InspectResult;
}
private string PrepareFood(object Order)
{
string PrepareResult = null;
try
{
if (Order is ChickenOrder)
{
for (int i=0; i < this.GetQuantity; i++)
{
Order.CutUp();
}
Order.Cook();
PrepareResult = "Chicken order has been cooked";
}
return PrepareResult;
}
catch (Exception)
{
}
}
}
}
名称空间简单\u餐厅\u模拟
{
班级员工
{
公共动态NewRequest(整数数量、字符串菜单项)
{
如果(MenuItem==“鸡肉”)
{
返回新的ChickenOrder();
}
其他的
{
返回新的EggOrder();
}
}
公共动态CopyRequest(动态菜单项)
{
/*待办事项:
if(现有订单){
返回现有订单;
}
否则{返回“你认为我是什么,奇迹工作者?”;
*/
返回null;
}
公共内部检查(对象顺序)
{
int-InspectResult=0;
返回检查结果;
}
私有字符串PrepareFood(对象顺序)
{
字符串PrepareResult=null;
尝试
{
如果(订单是奇克诺德)
{
for(int i=0;i
感谢您的帮助我不确定您在这里想做什么,但是PrepareMethod
没有编译的原因是它接受一个对象
,而对象
类型显然没有CutUp()
方法
您可以使用操作符尝试将Order
对象强制转换为ChickenOrder
:
ChickenOrder chickenOrder = Order as ChickenOrder;
if (chickenOrder != null)
{
for (int i = 0; i< this.GetQuantity; i++)
{
chickenOrder.CutUp();
}
chickenOrder.Cook();
PrepareResult = "Chicken order has been cooked";
}
class ChickenOrder : Order
{
...
}
EggOrder
和ChickenOrder
都是应该从Order
基类继承的特定类型的订单。这也意味着您可以将NewRequest
方法的返回类型从dynamic
更改为Order
,并将传递给其他方法的参数类型从object
更改为Order您的错误是哪一行?提示:Order
的编译时类型是什么变量is
操作符的使用并没有改变这一点……奇克诺德甚至继承了Order吗?新程序员不应该使用动态
或对象
。Dynamic主要用于特定的互操作场景。获取一个真正的编译时类型。