C#에서 프로그래밍을 할 때, 'CS0051: 일관성 없는 액세스 가능성: 매개 변수 형식이 메서드보다 액세스하기 어렵습니다.' 오류가 발생하였나요? 해당 오류에 대해 살펴보고, 해결하는 방법에 대해 알아보겠습니다.
CS0051: 일관성 없는 액세스 가능성: 매개 변수 형식이 메서드보다 액세스하기 어렵습니다.
CS0051 오류는 클래스 또는 메서드의 액세스 수준이 서로 일치하지 않을 때 자주 발생하는 오류이며, 액세스하려는 클래스의 접근 제어자(access modifier)가 더 낮은 경우에 발생합니다. 접근 제어 수준에 의해 접근이 불가능하여 오류가 발생하는 것이지요. 이를 해결하려면 충분한 정도의 제어 권한을 부여해야 한답니다.
이 문제를 해결하려면 액세스하려는 클래스 및 메서드에 적절한 접근 제어자, 이를테면 'public'과 같은 선언을 클래스에 추가하는 것입니다. 다음의 예제를 참고해 주세요~
- 액세스 하려는 클래스는 A와 B가 있다고 가정합니다. (접근하려는 각 클래스가 다른 어셈블리에 있음)
- A 클래스에 액세스가 불가한 상황을 가정합니다.
class A {} // 액세스할 수 없는 클래스
public class B {} // 액세스 가능한 클래스
// 클래스 A를 public으로 수정
public class A {} // 이제 액세스 가능
클래스 A에 'public'을 추가하면 이 문제를 해결할 수 있답니다. 가장 기본적인 방법은 클래스 A의 접근 제어자를 메서드와 일치시켜 CS0051 오류를 해결하는 것인데요, 요약하면 CS0051 오류는 클래스, 멤버, 및 메서드의 액세스를 조정하여 해결할 수 있습니다.
액세스 가능성 (접근 제어자)
각 접근 제어자는 다음과 같은 액세스 가능성을 제공합니다. 'CS0051: inconsistent accessibility parameter type' 오류는 단순히 'public'을 추가하여 해결하는 것이 아니고, 적절한 액세스 가능성을 설정하는 것이 핵심입니다.😘
호출자의 위치 | public | protected internal |
protected | internal | private |
클래스 내 | 가능 | 가능 | 가능 | 가능 | 가능 |
파생 클래스 (동일 어셈블리) |
가능 | 가능 | 가능 | 가능 | 불가능 |
비(non)-파생 클래스 (동일 어셈블리) |
가능 | 가능 | 불가능 | 가능 | 불가능 |
파생 클래스 (다른 어셈블리) |
가능 | 가능 | 가능 | 불가능 | 불가능 |
비(non)-파생 클래스 (다른 어셈블리) |
가능 | 불가능 | 불가능 | 불가능 | 불가능 |