현재 XNA에서 게임을 만들고 있는데 문자열을 사용하여 클래스를 만드는 방법을 찾으려고했습니다.문자열을 사용하여 클래스의 새 인스턴스 만들기
이string classtype = "DrillTool"; //classtype/classname
InvItem item = new .... ("DrillTool"); //this is where i'm lost!
DrillTool 클래스는 다음과 같습니다 :
class DrillTool : InvItem
//The constructor is something like this
public DrillTool(string itemName, string spriteName, string storedBatteryPower etc.)
그래서 내 질문은 : 어떻게 나는를 사용하여 클래스의 새 인스턴스를 만들려면 어떻게해야합니까 나는 이런 식으로 뭔가를 작업 할 끈? 그리고 나는 새로 만든 클래스 여기 아래
구체적인 모습에 매개 변수 또는 "생성자 값"에 어떻게 전달할 수 있습니다 내가 유지할 수 있도록 MyClass에 클래스의 InvItem (InventoryItem의) 클래스에서 상속
그 (것)들은 전부 품목이어야하기 때문에, 동일한 명부에있는 다른 종류. 아이템들은 다른 능력/값과 명령을 갖기를 원하기 때문에 다른 클래스로 나누어집니다.
다른 질문 : if 문없이 클래스를 유형/클래스로 캐스팅하려면 어떻게해야합니까? 이처럼
:
InvItem drillItem = new DrillTool(etc.);
(Typeof(drillItem))drillItem.valueThatOnlyExistsInDrillToolClass; //?
//I can't access the DrillTool values of drillItem if it has not been "converted".
그리고 안 함 :
if (drillItem.GetType() == typeof(DrillTool))
{
currentItem = (DrillTool)drillItem;
currentItem.valueThatOnlyExistsInDrillToolClass;
}
else if (etc.) //I am gonna end up with over 20 classes at least.
난 곳이나 그럼 그냥 필요한 것을 말해, 더 많은 정보를 필요로하는 경우 불분명입니다 경우
.도움을 주시면 감사하겠습니다. 미리 감사드립니다.
사이드 노트; 다운 캐스팅은 코드 - 냄새입니다. 왜 그렇게 많은 것을 필요로하는지 판단해야합니다. 주조 필요를 제거하십시오. – BradleyDotNET
일반 항목 클래스 인 클래스를 만들면 어떨까요? 그런 다음 클래스의 모든 정보를 저장하고 항목 이름과 항목 유형을 저장하므로 이와 같은 클래스를 만들 필요가 없습니다. – deathismyfriend
@deathismyfriend 님의 댓글에 댓글을 남겼습니다. 다형성이 모든 "특정"세부 사항을 다룰 수 있도록 항목을 설정해야합니다. 특정 유형에 대해서는 신경 쓰지 않아야합니다. – BradleyDotNET