2011-08-19 7 views

답변

2

실제로는 추상 메소드가 항상 오버라이드되어 있지 않으므로 오버라이드를 base.Method() 호출에 호출한다고 보증 할 수 없습니다.

가장 좋은 방법은 이벤트를 발생시키는 가상의 방법을 만든 다음 메서드 호출을 차단하려면 모든 재정의 base.Method()

를 호출하는 것입니다, here 그 작업을 수행하는 방법에 대한 질문입니다.

3

추상화 또는 아니요, Inversion of Control (IoC) 프레임 워크를 찾고 있습니다. 구체적으로 말하자면 메소드 차단을 수행 할 수있는 프레임 워크입니다.

나는 Unity 또는 Spring을 보았습니다. 거기에 몇 가지 다른 사람이 있습니다. 다음과 같이

3

이 작업을 수행하는 가장 좋은 방법은 다음과 같습니다

누군가가 그것을 실행하기 위해 DoOuter() 전화를해야 doInner를 호출하고 싶어
public abstract class MyClass { 

    public void DoOuter() { 
     FireEvent(); 
     DoInner(); 
    } 

    protected abstract void DoInner(); 
} 

. 기능을 지정하려면 DoInner()을 무시하십시오. 그러므로 FireEvent()은 항상 DoInner() 기능이 지정되기 전에 호출됩니다 ... 실제로는 보호 할 수없는 하위 클래스에 의해 직접 호출되지 않는 한 ....

+1

이것은 실제로 C# 질문이므로 답변을 조금 편집하고 있지만 기본 아이디어는 정확합니다. – StriplingWarrior

+0

D' oh. 고마워, 스트라이핑 워리어. – DJClayworth

관련 문제