클래스포스 목록 <Base> = 목록 <Derived> 및 법처럼 목록 <Derived>
public class Building
{
public string Name = "Not To Be Seen";
...
}
public class School: Building
{
public int NoOfRooms = 200;
public string Address = "123 Main St.";
...
}
목표 (N 다른 클래스/사용 사례)
// This is a simple example, in reality this code is far more complex
// the class "School" is private from the program
List<Building> city = new List<School>();
// city will only have properties of the class School (or at least those are the only properties seen)
Console.WriteLine(city[0].NoOfRooms.ToString()) // Outputs 200
Console.WriteLine(city[0].Name) // Should not output anything
이 올바르게에 따라 매우 수 있어야한다 보인다 목록을 변환합니다. 그러나, 나는 이것이 작동하도록하는 방법을 알아낼 수 없습니다. 그것은 그것이 공분산과 관련이있는 것처럼 보이지만, 이 아니라은 불변의 목록이나 유형을 원합니다. C#이 이런 종류의 변환을 쉽게 제공하지는 않습니다 (즉, 기본 클래스가 파생 클래스를 완전히 모방 할 수 있습니까?).
감사
당신의 예제가 잘못되었습니다.'List Jill'은'ClassRoom' 속성을 가지고 있지 않습니다 ... –
'public' 필드는 어떻게 파생 클래스에서 보이지 않을 것으로 예상합니까? –
그리고 아니오, 당신은 사람이 선생님처럼 행동하도록 할 수 없으며, 사람 객체의 선생님에게만 속한 속성에 액세스 할 수 없습니다 ..... 나는 아마도 당신의 유산을 여기에서 재고 할 것입니다 ... 그리고 그것은 당신이 상속을 사용하지 마십시오 –