mvvm패턴 샘플을 인터넷에서 찾아 만드는데 'ICommand'를 상속하여 오버라이드(재정의, ovrride)를 하려고 하니 다음과 같은 에러 메시지가 나옵니다.
재정의할 적절한 메서드를 찾을 수 없습니다(no suitable method found to override)
MSDN을 뒤져보니 "컴파일러 오류 CS0115"라는 것이 있군요.
(참고 : MS Docs - 컴파일러 오류 CS0115 )
설명의 뜻은
1) 베이스로 지정안되있는 녀석을 오버라이드를 시도했거나
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# 참조) )