저는 새로운 C# 프로그래머입니다. object does not contain a definition of '
methodName ' and no extension method '
methodName ' accepting a first argument of type 'object' could be found
오류가 발생했습니다. 왜 두 클래스가 연결되어 있지 않은지 나는 잘 모르겠습니다. 난 당신이 뭘 하려는지 확실하지 않다 당신의 도움이클래스가 다른 클래스의 메서드를 인식하지 못함
0
A
답변
1
에 대한
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)
{
}
}
}
}
감사 :
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;
}
}
}
및 호출 방법 : 여기
는 내 메소드 정의와 클래스 여기에PrepareMethod
이 컴파일되지 않는 이유는
object
을 허용하고
object
유형에는 분명히가 없다는 것입니다방법. 당신은 런타임에
PrepareFood
방법을 전달하는 객체가 실제로 경우 캐스트가 성공할 것이라고
가
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";
}
참고 :
당신은 ChickenOrder
에 Order
개체를 캐스팅하려고하는 as 연산자를 사용할 수 있습니다 ChickenOrder
. 그리고 당신이 Order
인수를 받아들이는 방법에 ChickenOrder
개체를 전달할 수 있기를 들어, ChickenOrder
클래스는 Order
에서 상속해야합니다
class ChickenOrder : Order
{
...
}
모두 EggOrder
및 ChickenOrder
는 Order
에서 상속해야 주문의 특정 유형은 기본 클래스. 또한 NewRequest
메서드의 반환 형식을 dynamic
에서 Order
으로 변경하고 다른 메서드로 전달할 매개 변수의 형식을 object
에서 Order
으로 변경할 수 있음을 의미합니다.
관련 문제
- 1. Bean이 프라임 메서드를 인식하지 못함
- 2. 내 클래스가 다른 클래스의 메서드를 상속하는 방법
- 3. 다른 클래스의 메서드를 호출해야합니까?
- 4. Swift가 Obj-C 클래스의 메서드를 인식하지 못합니다.
- 5. Rubinius가 File 클래스의 메서드를 인식하지 못합니다.
- 6. 다른 클래스의 메서드를 사용하는 Python
- 7. 파이썬이 모듈을 인식하지 못함
- 8. 컨트롤 클래스가 다른 클래스의 메서드를 사용하는 경우 어떻게 연결을 모델링합니까?
- 9. Cloudera가 호스트를 인식하지 못함
- 10. PHP 도움말, 다른 사용자를 인식하지 못함
- 11. Entity Framework에서 TableAttribute의 다른 스키마를 인식하지 못함
- 12. 다른 클래스의 메서드를 그립니다.
- 13. C# 컴파일러가 클래스가 인터페이스를 구현하고 있음을 인식하지 못함
- 14. 자식 클래스가 부모 클래스의 메서드를 사용하도록하는 방법
- 15. 파생 클래스가 기본 클래스의 메서드를 재정의하는지 확인
- 16. NSFetchedResultsController 삭제를 인식하지 못함
- 17. UITapGestureRecognizer가 탭을 인식하지 못함
- 18. 하이브가 항아리를 인식하지 못함
- 19. CMUSphix가 인식하지 못함
- 20. Maven이 persistence.xml을 인식하지 못함
- 21. Android 제스처를 인식하지 못함
- 22. Cobertura가 테스트를 인식하지 못함
- 23. zsh가 HEAD를 인식하지 못함^
- 24. FOSJsRoutingBundle이 경로를 인식하지 못함
- 25. java.util.Locale이 오스트리아를 인식하지 못함
- 26. jQuery 클릭을 인식하지 못함
- 27. Pip이 Cython을 인식하지 못함
- 28. 다른 클래스의 메서드를 사용하려면 어떻게해야합니까?
- 29. 클래스의 일부 메소드가 이미 MKMapView의 인스턴스가 존재 함을 인식하지 못함
- 30. LINQ to Entities가이 메서드를 인식하지 못함 - Entity Framework 및 DDD
오류는 무엇입니까? – maccettura
힌트 :'Order' 변수의 컴파일 타임 타입은 무엇입니까? 'is' 연산자를 사용하면 그 값이 변경되지 않습니다 ... –
ChickenOrder도 Order로부터 상속합니까? – mm8