Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 类不识别其他类中的方法_C#_Methods - Fatal编程技术网

C# 类不识别其他类中的方法

C# 类不识别其他类中的方法,c#,methods,C#,Methods,我是一名新的C#程序员,我想知道为什么我得到的对象不包含“methodName”的定义,并且没有扩展方法“methodName”,接受类型为“object”的第一个参数时会发现错误。我不知道为什么这两个类似乎没有联系 下面是包含我的方法定义的类: namespace Simple_Restaurant_Simulation { class ChickenOrder { public int quantity; public int GetQuant

我是一名新的C#程序员,我想知道为什么我得到的
对象不包含“
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主要用于特定的互操作场景。获取一个真正的编译时类型。