2016-10-21 3 views
0

기본 클래스를 많이 포함하려는 PCL이 있으므로 각 프로젝트마다 다시 만들 필요가 없습니다. 이제는 페이스 북에서 추가 작업을 계획하고 있습니다. 프로젝트에 PCL을 사용하고 싶을 때마다 외부 DLL을 참조해야합니다. 단지 몇 개의 스크린 만 가진 프로젝트 일지라도, 오류가 발생할 수 있기 때문에, 티.선택적으로 외부 라이브러리를 포함 할 수 있습니까?

문제가되지 않는다고 말하면 : 나는 매번 필요없는 외부 dll을 추가 할 계획입니다.

어떻게 해결할 수 있습니까? 이 DLL을 내 PCL에 사용하는 코드를 포함하고 싶지만 PCL을 사용할 때마다 DLL을 포함시키지 않으려합니다.

답변

1

여기서 문제는 코드에서 외부 라이브러리의 형식을 사용하려는 것이며 이 라이브러리를 참조하지 않고 수행 할 수 없다는 것입니다.

리플렉션을 사용하면이 문제를 해결할 수 있지만 코드가 훨씬 복잡해지면 좋겠다.

  • 이 "일반적인 PCL"(. 페이스 북에 대한 즉 ISocialMediaPlatform)에서 각 외부 의존성에 대한 인터페이스를 만들기 :

    또 다른 해결책이다.

  • 참조가 모두 당신의 "일반적인 PCL"외부 도서관, 이러한 인터페이스 중 하나 (예. FacebookSocialMediaPlatform : ISocialMediaPlatform)를 구현하는 클래스를 가지고
    • 이 구현은 다음 참조 할 수있는 각각의 외부 의존성에 대한 새로운 PCL 만들기 외부 의존성 및 반사 또는 의존성 주입 프레임 워크를 사용하여 직접
  • 이 "일반적인 PCL"로 각 인터페이스의 구현을 주사의 유형을 사용

이것은 복잡성의 또 다른 층을 추가하지만 부작용으로 인해 일반적인 PCL 코드를 테스트 할 수도 있습니다.

마지막으로 내가 개인적으로 선호하는 솔루션은 커다란 "공통 PCL"을 전혀 갖지 않고 특정 역할을 수행하는 몇 개의 작은 PC로 분할하는 것입니다.

+0

글쎄 내 문제는 필자가 선택적으로 포함시키고 자하는 약 20 개의 라이브러리가 있으며 미래에 더 많은 라이브러리가 포함된다는 것입니다. 이러한 라이브러리는 플랫폼에서 호출되는 "설정"메소드에서 한 번만 참조하면되며 일반적으로 "애플리케이션"클래스에서 추상 또는 가상 인 app 또는 API 키를 사용합니다. 따라서 각 플랫폼에 대해 새로운 PCL을 만들고 올바른 API 키와 페어링하는 방법을 알지 못합니다. 또한 링크가 필요하다고 생각하면 주석을 추가하고 링커를 사용하는 솔루션을 추가 할 수 있습니까? – vrwim

+0

나는 물건을 작고 단순하게 유지할 것을 조언 할 뿐이다. 나는 유지할 수없는 몬스터 라이브러리를 만드는 데 도움이되도록 노력하고 싶지 않다. 그건 내 의견이지만, 의도 된 위반은 아닙니다. –

관련 문제