2012. 2. 22. 17:25

mvvm패턴 샘플을 인터넷에서 찾아 만드는데 'ICommand'를 상속하여 오버라이드(재정의, ovrride)를 하려고 하니 다음과 같은 에러 메시지가 나옵니다.

 

재정의할 적절한 메서드를 찾을 수 없습니다(no suitable method found to override)

 

 

1. 오류의 원인

MSDN을 뒤져보니 "컴파일러 오류 CS0115"라는 것이 있군요.
(참고 : MS Docs - 컴파일러 오류 CS0115 )

설명의 뜻은

1) 베이스로 지정안되있는 녀석을 오버라이드를 시도했거나

2) 오버로드를 해야 하는 녀석(파라메타가 다르다던가 이름이 다르다던가) 해야 할 녀석을 오버라이드 했다

입니다.

 

 

2. 해결 방법

결국 해결법은
1. 올바른 베이스를 지정한다.
2. 'override' 키워드를 뺀다.(오버라이드가 아닌 오버로드가 됨)

 - 인터페이스의 경우 오버라이드가 안됨
입니다.

 

인터페이스는 오버라이드가 안되니 주의해 주세요.

 

 

마무리

- 2022-08-29 추가

아주 오래전에 쓴 글이라 잘못된 것이 있어서 수정합니다.

 

'ICommand'는 인터페이스입니다.

public interface ICommand
{
	event EventHandler CanExecuteChanged;
	bool CanExecute(object parameter);
	void Execute(object parameter);
}

 

인터페이스는 구현체가 아니므로 덮어쓰기(오버라이드)를 할 수 없는 게 맞습니다.

(참고 : MS Docs - override(C# 참조) )