2014-02-18 3 views
1

"xml"다른 프로젝트를 "동기화"프로젝트에 추가했습니다.순환 종속성을 해결하는 방법

그래서 program.cs (xml 프로젝트에서)는 getDetails()를 실행합니다.이 getDetails()는 동기화 프로젝트에서 FectchDetails()를 실행하고 결과를 객체로 xml/getDetails()에 반환합니다.

Synchronize/FecthDetails()에서 오류가 발생하면 xml/getDetails()를 다시 실행하고 싶습니다.

필자는 xml.getDetails를 시도했지만 프로젝트에 대한 참조가 아니므로 xml.getDetails를 시도했지만 프로젝트에 대한 참조가 아니므로 xml 프로젝트를 synchroinse에 추가하려고했으나 순환 의존성을 일으킬 수 있으므로이 작업을 수행 할 수 없다고 말했습니다. .... 나는이

감사

+1

를 동기화 할 수 있습니다. –

+0

리플렉션을 사용해보세요. 이 게시물은 아마도 당신을 도울 것입니다. http://stackoverflow.com/questions/2202381/reflection-how-to-invoke-method-with-parameters – samar

답변

2

Synchronize/FecthDetails()에서 오류가 발생하면 응용 프로그램 예외를 throw하여 xml/getDetails에 catch 할 수 있습니다. 그런 다음 다시 시도하거나 사용자에게 알릴 지 여부를 결정할 수 있습니다.

질문에 대해 오해 한 경우 죄송합니다. 가능하다면 일부 psuedo-code를 게시하십시오.

+0

아니 완벽 했어, xml/details에서 잡힌 캐치를 던진 다음 오류를 기록하고 작동하는 함수를 다시 실행했습니다. 감사 – John

2

당신은 순환 종속성 얻을 해결 방법 :

A가 B에 의존하고 모두 다음이 의존성을 필요가 있다고 생각하는 경우 B는 A.

에 따라 달라집니다 그들은에 속해야한다. 전자 프로젝트.

+0

글쎄, 그 중 하나, 또는 둘 다 필요한 공통 논리를 세 번째 프로젝트로 옮길 수 있습니다. 둘 모두 개별적으로 의존 할 수 있습니다. – Kjartan

4

는 기본적으로, 프로젝트 Y에 따라 프로젝트 X가 (X -> Y), 프로젝트 Y 프로젝트 X에 따라 (Y -> X). 즉

, 같은이 상황은 컴파일러가 불평 때문에 처음 컴파일하려면 어떻게 알고하지 않는다는 것을 의미

(X < ---> Y).

이 문제를 해결하려면 프로젝트 중 하나 또는 둘 다에서 이동할 수있는 일반적인 사항/논리 부분을 찾고 다른 프로젝트보다 먼저 빌드 할 수있는 세 번째 프로젝트를 만듭니다. 그 안에 모든 일반적인 것들을 넣으십시오, 그러면 괜찮을 것입니다; 당신의 의존성은 다음과 같을 것입니다. X와 Y가 모두 컴파일되기 전에 Z가 컴파일 되기만하면 문제가되지 않습니다. (X -> Z < - Y)

0

둘 다 XML에서이 프로젝트에 FetchDetails() 다른 프로젝트 참조에를 이동할 수 프로젝트

당신은 정말 귀하의 질문에 명확하게하기 위해, 몇 가지 코드를 보여줄 필요가