외부에서 호출 할 수없는 public 메서드가있는 libary 클래스를 확장하려고합니다. 나는 "새로운"키워드를 사용하여 그것을 숨길 수 있다는 것을 알고 있지만 문제는 다른 선언이 많이 있다는 것입니다. 이 같은 뭔가 : C#의 부모 메서드에서 모든 재정의를 숨기는 방법
class Parent() {
public double method(double a, double b) { ... }
public int method(int a, int b) { ... }
public System.Int32 method(System.Int32 a, System.Int32 b) { ... }
}
지금 내가 할 수있는 :
class Child() {
// Make method private.
private new double method(double a, double b) { return base.method(a, b) }
private new int method(int a, int b) { return base.method(a, b) }
private new System.Int32 method(System.Int32 a, System.Int32 b) { return base.method(a, b) }
/// Own Code.
}
그러나 그 함수의 모든 재정의 개인 만들 수있는 간단한 방법이없는 경우 내가 궁금하네요.
아니요. 메서드를 사용하기 전에 개체 ('Child'유형)가 'Parent'로 강제 변환되는 경우도 고려하십시오. C#의 상속은 기본 LSP 규칙에서 가장 잘 작동합니다. –
@pst와 동의하십시오. 'Parent '에서'Child'를 파생시킬 때'Child' *는'Parent'라는 것을 기억해야합니다. 이 메소드를'Parent'에서 호출 할 수 있다면'Child'에서 호출 할 수 있어야합니다. –
당신은 아마 맞을 것입니다, 나는 모두 준비가되어 있습니다. 스크립트 언어 측면에서 나는 여전히 너무 많이 생각한다고 생각합니다. 고맙습니다. – Gellweiler