행동의이 종류는 C# 4.0는 C# .NET 4.0 및 제네릭
에 가능하면 사람이 내가 강력하게 형식화 된 유지하고 싶은 객체 계층 구조를 가지고 나에게 말할 수 있는지 궁금 해서요. 이
class ItemBase {}
class ItemType<T> where T : ItemBase
{
T Base { get; set; }
}
class EquipmentBase : ItemBase {}
class EquipmentType : ItemType<EquipmentBase> {}
같은 뭔가 내가 할 수 있기를 원하는 것은이
ItemType item = new EquipmentType();
같은 뭔가를하고 난 item.Base 유형의 ItemBase을 반환합니다. 기본적으로 강력한 타이핑없이 기본 클래스에 제네릭을 강력하게 입력하는 것이 현명한지 알고 싶습니다. 이 덕분에 ItemType을 EquipmentType으로 다시 캐스팅 할 수 있고 모든 강력한 형식화를 다시 얻을 수 있습니다.
내 대답에 언급 된 2 가지 이유 때문에 C# 4에서도 작동하지 않습니다. 그러나 ItemType이 대신 IItemType 인 경우에도 T 및 in 매개 변수로 필요한 사실은 원하는 사용법을 효과적으로 배제합니다. –
Josh