2
기본 생성자를 호출하기 전에 먼저 파생 클래스 생성자를 호출해야하는 클래스가 있습니다. 나는 다음과 같은 코드에 의해 기본 생성자가 먼저 호출됩니다 알고생성자를 상속하여 생성자 호출 순서를 반대로합니다.
public class A {
protected A() {
//do something
}
}
public class B : A {
public B() : base() {
//do something else
}
}
순서, 또는에 대한 해결 방법을 반전 할 수있는 방법들이 있습니까? doConstructor()와 같은 기본 클래스에서 추가 보호 된 메서드를 만들고 가능한 첫 번째 작업 후에 파생 생성자에서 호출 할 수있는 가능한 솔루션 중 하나는 컴파일러에서 허용하지 않으므로 읽기 전용 필드를 사용할 수 없다는 것입니다.
템플릿 메서드 패턴 – abhilash
내 화면에서 코드를 읽은 것처럼 보입니다. o) 생성자의 가상 멤버를 호출하는 것이 좋습니다. –
기본 생성자 ('A')에서 가상 메소드를 호출하는 것은 약간 위험합니다. 'B'의 오버라이드 (override)는, 현재,'B'의 constructor보다 전에 실행되고 있습니다. 이것은, 초기화되어 있지 않은 필드에 문제를 일으킬 가능성이 있습니다. 나는 일반적으로 여기 또는 더 나은주의를 권고한다 : ** post ** - ctor'Initialize' 단계. –