그래서이 시스템을 기본 클래스 DisplayObject
으로 설정해야합니다. 그것은 Render
메서드와 그 외의 DisplayObjects
목록을 가지고 있습니다. 또한 다양한 행렬 변환에 대한 데이터가 포함되어 있지만 에는에 실제 도면에 대한 데이터가 포함되어 있지 않습니다. 그렇기 때문에 Render
메소드가 가상입니다.가상 메서드의 모든 재정의 후 코드 실행
다음 두 클래스가 있습니다. ColoredShape
및 TexturedShape
는 각각 DisplayObject
상속 및
base.Render();
로 시작하고 도면 부호를 수행하는 새로운 방법으로 Render
메소드를 재정의.
이제 개체의 모든 자식에 대해 Render
을 호출하려면 후에 렌더링을 완료해야합니다. 그래서 내 문제가있다. 나는 DisplayObject
클래스의 Render
방법의 말에
foreach (var child in Children) child.Render();
을 할 경우는 오버라이드 (override)가되기 전에는
base.Render()
전화의 일부이기 때문에, 실행 될 것입니다 내가 대신 서브 클래스에서이 코드를 삽입하는 경우,
DisplayObject
만이이 기능을 잃어 버리며 앞으로 상속받을 모든 서브 클래스가 수동으로 기능을 구현하도록합니다. 코드는 그래서 "자기 렌더링"