인벤토리 개체가있는 Character 개체를 만듭니다. Inventory 객체에는 InventoryItem 객체의 목록이 있고 모든 InventoryItem 객체에는 Item 객체가 있습니다.이 개체 클래스를 만드는 방법
문자 < = 재고 < = 여러 InventoryItem의 < = 항목
내 문제는 항목에 있습니다. 항목은 여러 유형이 될 수 있습니다. 모든 유형마다 고유 한 속성이 있습니다. 그래서 내 데이터베이스에는 Items, WeaponItem, ArmorItem, UseableItem, TrashItem, QuestItem 및 AccesoryItem 테이블이 있습니다. 모든 항목 유형 테이블에는 ItemId가있어 항목을 항목에 연결합니다.
제 질문은 : 항목 클래스에 다른 유형의 항목을 어떻게 구현합니까?
내가 생각한 것은 각 유형에 대해 Field/Property를 만들고 현재 유형의 항목을 제외하고 모두 null로 설정하는 것입니다. (또한 아마도 테이블 ItemType을 추가하고 Field/Property 클래스에 추가)
내가 생각한 또 다른 것은 각 유형에 대해 클래스를 만들고 위와 동일하지만 객체 자체와 함께하는 것입니다.
그 방법이 좋을까요, 아니면 더 좋을까요? 필요한 경우
public class Item
{
#region Fields
//=======================================================================================
private int itemId;
private string itemName;
private int itemLevel;
private int itemRarityId;
private int equipementSlotId;
private int statsId;
private Stats stats;
private string imageUrl;
private int equipementSlotSecondId;
private int itemWeight;
//=======================================================================================
#endregion
#region Properties
//=======================================================================================
public int ItemId
{
get
{
return itemId;
}
set
{
itemId = value;
}
}
public string ItemName
{
get
{
return itemName;
}
set
{
itemName = value;
}
}
public int ItemLevel
{
get
{
return itemLevel;
}
set
{
itemLevel = value;
}
}
public int ItemRarityId
{
get
{
return itemRarityId;
}
set
{
itemRarityId = value;
}
}
public int EquipementSlotId
{
get
{
return equipementSlotId;
}
set
{
equipementSlotId = value;
}
}
public int StatsId
{
get
{
return statsId;
}
set
{
statsId = value;
}
}
public Stats Stats
{
get
{
return stats;
}
set
{
stats = value;
}
}
public string ImageUrl
{
get
{
return imageUrl;
}
set
{
imageUrl = value;
}
}
public int EquipementSlotSecondId
{
get
{
return equipementSlotSecondId;
}
set
{
equipementSlotSecondId = value;
}
}
public int ItemWeight
{
get
{
return itemWeight;
}
set
{
itemWeight = value;
}
}
#endregion
#region Methods
//=======================================================================================
#endregion
#region Constructors
//=======================================================================================
public Item()
{
}
public Item(int pItemId)
{
ItemId = pItemId;
}
//=======================================================================================
#endregion
내가 어떤 추가 정보를 추가 할 수 있습니다
여기에 내 현재 항목 클래스 코드입니다.
편집 : 상속. 나는 그것에 대해 잊어 버린 것에 대해 바보입니다.
그래서 항목 클래스를 상속하는 각 유형별로 클래스를 만듭니다. 그러면 내 질문이 지금 여기로 바뀝니다.
인벤토리를 만들려면 inventoryItem Item을 사용하십시오. 어떤 아이템 타입 클래스를 사용할지를 알려면, 데이터베이스에 itemType 속성을 item 또는 itemType 테이블과 함께 생성해야만합니까? itemType과 함께 링크 한 후이 itemType/itemTypeId를 사용하여 사용할 클래스를 지정하십시오. (스위치 케이스 사용) 잘못 했나요?
죄송합니다. 질문이 어리석은 짓이라면 조금 느립니다. @emd는 상속이 경우에 매우 유용 할 것이라고 말했다 것처럼 :(
당신은 상속을 배울 필요가있다. – emd
모르겠다면, 힌트를 주자. 다음과 같은 속성을 선언 할 수있다.'public int ItemId {get; 세트; }'. 이것은 private 필드를 생성하고'get' 및'set' 연산자에서 액세스하여 속성과 정확히 똑같이 작동하는 속기입니다. 이렇게하면 많은 타이핑을 줄일 수 있습니다. – Wutz
왜 항목 테이블이 너무 많습니까? 그들은 다른 속성을 가지고 있습니까? 코드 스 니펫에 이들을 표시하지 마십시오. 테이블 세부 사항을 공유 할 수 있습니까? – Tombala