2014-06-09 3 views
0

나는 app이라는 이름의 윈도우 비어있는 앱과 backgroundtask라는 윈도우 RTComponent를 프로젝트 솔루션에 추가했다. 그래서 앱에 backgroundtask에 대한 참조를 추가해야했습니다.runtimecomponent에 대한 참조를 추가하는 동안 순환 종속성을 피하는 방법은 무엇입니까?

그러나 Backgroundtaskapp의 데이터 입력을 사용해야했습니다. 그래서 app에 클래스를 만들고 app에 대한 참조를 Backgroundtask에 추가하려고했습니다.

순환 종속성을 나타내는 오류가 표시되었습니다. app에 제공된 데이터를 Backgroundtask까지 사용하고 Backgroundtask에서 app에 대한 참조를 모두 동시에 추가하려면 어떻게해야합니까? Backgroundtask 필요 app를 참조하는 이유

+0

나는이 응용 프로그램이 백그라운드 작업 구성 요소에 선언 된 (보기) 모델에 바인딩해야한다고 생각합니다. – SKall

답변

4

난 당신이 다른 프로젝트에서 공공 정적 변수에 액세스하려는

  • , 또는
  • 하지 않는 한 당신은 클래스의 인스턴스를 전달하는, 잘 모르겠어요 app 프로젝트에서, 그래서 Backgroundtask는 대신에게

에 액세스 할 수 없습니다 매개 변수로 app에서 값을 전달 어떤 방법 당신이 일 경우, Backgroundtask에 전화하거나있어 패스 할 값이 많을 때 두 프로젝트간에 공유해야하는 클래스가 포함 된 세 번째 프로젝트를 만듭니다.

  • Shared이라는 프로젝트를 만들고 다른 프로젝트에서 참조하십시오.

  • AppData이라는 새 클래스를 추가하십시오 (또는 적절하다고 생각되는 구체적인 이름을 지정하십시오).

  • 클래스를 인스턴스화하여 app으로 만들고 필요한 데이터로 채우고 해당 클래스 유형의 매개 변수를 허용하는 Backgroundtask의 메소드에 전달합니다.

이러한 옵션 중 하나는 순환 의존성을 제거해야합니다.

+0

나는'Shared'라는 이름의 프로젝트를 만들었는데,이 프로젝트는 클래스 (class1은 많은 값을 전달하고 public static 변수로 만들었습니다)를 포함하는 빈 앱 (XAML)입니다. 나는 'app'을 통해 데이터 항목에 접근하려고했지만 오류가 표시됩니다 : Payload에 동일한 대상 경로'MainPage.xbf '가있는 두 개 이상의 파일이 있습니다. 어떻게 해결할 수 있습니까? – user3124361

+0

"Shared"프로젝트를 제거하십시오. 잘못된 프로젝트 유형입니다. 대신 클래스 라이브러리 인 프로젝트를 추가하십시오. 또한 "class1"내부의 변수를 정적으로 만들지 마십시오. 공개로 설정 한 다음 필요에 따라 "class1"의 새 인스턴스를 만듭니다. –

+0

대단히 감사합니다. – user3124361

관련 문제