문제

나는 최근에 모든 소프트웨어를 재 작성하지 않고 최근 소프트웨어에서 실행 한 디자인 결함을 고치려고 노력하고 있습니다. 일부 서버에서 데이터를 수신하는 메시지 리스너 스레드가있는 .exe가있는 다음 수신 한 모든 데이터를 저장하는 SEPERATE DLL (staticDataclass라고 함)에 클래스에 작성하는 것입니다 (주로 정적입니다. 시작시 데이터베이스에서 가져 왔습니다). 이 클래스는 또한 다른 클래스가 데이터를 리테로화하는 데 사용할 수있는 방법을 제공합니다. 문제는 상점 (세트) 메소드가 모두 공개되므로 다른 클래스는이 데이터를 덮어 쓰고 전체 응용 프로그램을 중단 할 수 있다는 것입니다. 실행 파일 자체에 포함 된 개체를 제외하고 모든 객체에 데이터를 보호하는 좋은 방법은 무엇입니까?

지금은 공개 getters 만 정의하는 인터페이스를 사용한 다음 싱글 톤 클래스가 인터페이스를 구현 한 다음 인스턴스 속성이 인터페이스 유형을 반환하여 인터페이스에서 선언 된 GET 메소드 만 사용할 수 있습니다. . 그러나 실행 파일이 시작되면 인터페이스 유형이 아닌 정적 Dataclass 객체에 대한 실제 참조를 얻을 수 있으므로 상점/세트 방법도 호출 할 수 있습니다.

이것은 완전한 증거는 아니지만 시스템에 익숙하지 않은 일부 개발자는 이러한 공개 저장소를 사용하는 것이 좋다고 생각하는 것을 방지합니다. 대신, 그들은 상점 방법을 포함하는 유형으로 객체를 캐스팅하여 그것을 깨뜨려야합니다.

더 깨끗한 방법이 있습니까?

도움이 되었습니까?

해결책

세트 방법을 내부 내부로 만들고 InternalSvisibleToattribute를 사용하여 선호하는 실행 파일에 대한 액세스 권한을 부여 할 수 있습니다.

다른 팁

나는 동의합니다 - 신뢰할 수있는 어셈블리에 내부를 볼 수있게하는 것은 당신이하고 싶은 일을 달성하는 가장 쉬운 방법처럼 들립니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top