2013-07-01 2 views
1

몇 가지 기본 로직이 포함 된 클래스 라이브러리 프로젝트가 있습니다.C# 소비자에 따라 DLL app.config 변경하기

이 프로젝트로 만든 DLL은 다른 몇 가지 프로젝트에서 사용됩니다.

DLL에서 사용하는 몇 가지 값을 사용하여 클래스 라이브러리 프로젝트에 app.config 파일이 있습니다. 각 소비자 프로젝트는 DLL을 사용합니다

, 그것은의 app.config 예를 들어

의 값을 변경할 수 있으며, 내 DLL의 app.config에 3 설정이 포함 된 경우 : A, 다음, B, C, : 를
DLL의 첫 번째 소비자는 A = "a", B = "aa", C = "aaa"를 갖습니다.
DLL의 두 번째 소비자는 A = "t", B = "tt", C = "ttt"입니다.
등 ...

이 시나리오를 달성하는 가장 좋은 방법은 무엇입니까?
(app.config는 DLL을 사용하는 프로젝트에 있어야합니다.)

감사합니다. :)

편집 : 그것을 포함

는 DLL에서 내 코드의 대부분을

가 소비하는 ASMX 웹 서비스의 .config입니다. DLL을 사용할 각 응용 프로그램에는 자체 WS 주소가 있습니다 (계약은 동일합니다). 어떻게 응용 프로그램의 서비스 주소를 DLL에 삽입 할 수 있습니까?

편집 # 2 :

지금 내가이 개 설정 파일이 : 클래스 라이브러리 프로젝트에서
1 일 - WCF 클라이언트 설정이 포함되어 있습니다.
2. DLL을 사용하는 응용 프로그램에는 DLL 값이있는 구성이 들어 있습니다.

응용 프로그램 구성의 값을 DLL의 구성 (예 : 끝점 주소)에 삽입하려면 어떻게해야합니까?

+2

클래스 라이브러리에는 자체 구성 파일이 없습니다. 하나를 추가하거나 (일부 툴링은 자동으로 하나를 추가 할 수 있지만) 런타임에는 사용하지 않습니다. 존경받는 유일한 설정 파일은 주 응용 프로그램을위한 것입니다. –

+0

DB에 이러한 설정을 저장할 수 없습니까? 그리고 소비하는 응용 프로그램에서 런타임에 올바른 세트를 선택 하시겠습니까? – RubbleFord

+0

@RubbleFord - 유감스럽게도 DB는 다양한 제약으로 인해 옵션이 아닙니다. 그럼 여기서 가장 좋은 방법은 무엇입니까? – Sash

답변

2

응용 프로그램에만 .config 파일이 있으므로 클래스 라이브러리에 .config 파일이 있으면 쓸모가 없습니다. 값이 내가 생각할 수있는 다른 곳 옵션에서 온해야한다는 것을 의미 은 다음과 같습니다

  1. 를 사용하여 응용 프로그램의 .config 파일 - 단점 : 응용 프로그램을 작성하는 사람은에 대해 알아야 할 당신의 구성 값을 추가하고이를 추가하십시오. 대부분의 경우 누락 된 값에 대한 예외를 얻을 때 이러한 설정에 대해 알 수 있습니다.
  2. 모든 응용 프로그램이 동일한 DB를 사용하는 경우 값을 DB (또는 다른 웹 서비스)에 저장하면 좋은 생각 일 수 있습니다. 매우 제한된 수의 응용 프로그램을 사용하면 잘 작동합니다. 생산/테스트 환경에 대해 서로 다른 값을 사용합니다.
  3. 계약자에서 이러한 값을 필요로하는 모든 클래스를 만듭니다. 이점 : 힌트가 필요하지 않습니다. 응용 프로그램 프로그래머는 데이터를 인식합니다. 이것은 깨끗한 인터페이스입니다. 고객 별 프로젝트 인 경우이 옵션을 사용합니다.단점 : 응용 프로그램 프로그래머를위한 많은 작업
+0

답변 해 주셔서 감사합니다. 첫 번째 옵션을 선택하면 응용 프로그램의 .config 파일을 DLL의 코드에서 어떻게 읽을 수 있습니까? – Sash

+0

업데이트 된 질문을 살펴보십시오. – Sash

+0

응용 프로그램의 인스턴스가 많고 각 웹 서비스에 코드가 한 번만 있으면 원하는 값을 구성 파일에 추가하고 다음과 같이 읽습니다. System.Configuration.ConfigurationManager.AppSettings [ "SomeKey"] – asafrob