2010-04-23 5 views
3

SQL 연결에 비해 몇 가지 유틸리티 작업을 수행하는 메소드 세트가 있으며 지금까지는 프로젝트에서 프로젝트로 복사되었습니다. 그러나 시간이 지남에 따라 프로젝트 번호가 늘어났습니다. 버그를 찾거나 업데이트해야 할 경우에 대비해 이러한 방법을 동기화해야합니다.여러 프로젝트에서 클래스의 일부 사용

SQL 액세스 클래스가 부분 클래스 인 상태로 가져올 수있었습니다. 한 부분은 프로젝트에만 사용되며 특정 데이터베이스에 대한 래퍼를 포함합니다. 두 번째 부분은 일반적인 프로젝트이며 모든 프로젝트 관련 데이터베이스에서 사용되는 메서드를 포함합니다.

문제는 지금은 같은 내용으로 8 개 이상의 프로젝트 복사 "유틸리티"클래스를 가질 것입니다,하지만 서로 다른 네임 스페이스입니다. C/C++에서는 필요할 때마다 파일의 내용을 # 포함하기 때문에 간단했을 것입니다. C#에서는 무엇을해야합니까?

+2

질문 : 클래스에 연결되어있는 모든 프로젝트가있는 유틸리티 라이브러리를 만드는 것이 어떻습니까? 프로젝트 특정 구현이 필요한 경우 재정의 할 수있는 메서드와 같은 유틸리티 라이브러리에서 사용자 지정을위한 메서드/후크를 제공 할 수 있습니다.이 클래스에서 상속 받아 메서드를 구현하거나 재정의 할 수 있습니까? – Ando

답변

4

공통 프로젝트에서 모든 공통 코드를 포함하는 완전한 클래스를 가질 수 있도록 클래스를 분리하십시오. 공통 인터페이스를 사용하여 프로젝트별로 기능 비트를 표현하고, 각 프로젝트에서 해당 인터페이스를 구현하고 인터페이스 인스턴스를 필요한 경우 공통 코드로 전달하십시오.

+0

감사합니다. 왜 이런 식으로 분리하는 것이 나에게 발생하지 않았는지 모르겠습니다. :-) – Axarydax

1

Jon이 말했듯이 라이브러리 어셈블리는 좋은 아이디어입니다.

어셈블리 참조가 자체적으로 요구 사항에 빌려주지 않는 경우가 있으므로 라이브러리 어셈블리를 만들지 않으면 Visual Studio에서 간과하기 쉬운 기능 (예 : adding an existing file as a link)을 사용할 수 있습니다.

이것은 당신이 모든 프로젝트에서 사용할 수있는 파일의 부분 클래스의 공통 부분을 유지할 수있다.

유일한 제한은 상대 경로가 파일을 참조하는 데 사용된다는 것입니다.

이 전략에서 내가 가진 유일한 문제는 오픈 소스 Mercurial scc 공급자입니다. 프로젝트에서 링크 된 파일을 제거하면 기본 파일이 삭제됩니다. 매우 짜증나지만 이것은 당신에게 문제가되지 않을 수 있습니다.

업데이트 : VS Mercurial SCC에 링크 된 파일 버그는 다음 릴리스에서 해결되어야한다.

관련 문제