2011-03-10 3 views
3

새 프로젝트를 위해 팀 간의 노력을 어떻게 가장 잘 나누는 지 고려 중입니다. 우리는 Windows C# 응용 서비스 팀과 더 작은 iOS Objective-C 팀을 보유하고 있습니다. 조만간 Android 애플리케이션이 필요할 것입니다.iOS XCode 응용 프로그램이 MonoTouch 어셈블리를 참조 할 수 있습니까?

우리의 서비스를 호출하고 로컬 데이터 저장소와 동기화를 처리하는 장치의 도메인 계층/API 어셈블리는 C#으로 작성하고 MonoTouch로 컴파일하는 논리적 구성 요소입니다. 그런 다음 Objective-C 팀이이 구성 요소를 참조합니다. 그게 가능하니? MonoTouch를 참조하는 C 어셈블리를 많이 읽었지만 다른 방법으로도 사용할 수 있습니까?

가능한 경우이 접근법을 시도한 경험을 듣고 환상적입니다!

감사 아론

답변

2

은 기술적으로 가능하지만, 오늘 그렇게하는 쉬운 방법이 없습니다.

지금 할 수있는 최선의 방법은 C#에서 응용 프로그램을 시작한 다음 원하는 경우 Objective-C 코드로 제어를 전송하는 것입니다. 는 C# 발사하는 동안, 당신은 P를 사용하여 다시 목표 - C 코드에 의해 호출하는 방법을 등록 할 수 있습니다/같은 전화 호출 : 그럼 당신은

delegate void some_callback_t (int parameter1, int parameter2); 

[DllImport ("__Internal")] 
void SetCallback (some_callback_t callback); 

static void mycallback (int parameter1, int parameter2) 
{ 
    // Here goes your C# logic to be called by C 
} 

전화 :

SetCallback (mycallback); 

을 주목 mycallback가 정적 메소드 (정적 컴파일의 제한) 여야합니다. 그렇다면 Objective-C 코드는 다음을 구현하여 서비스를 사용할 수 있습니다.

typedef (*callback_t) (int p1, int p2); 
callback_t callback; 
void SetCallback (callback_t cb) 
{ 
    callback = cb; 
} 

void InvokeCSharp() 
{ 
    callback (1, 2); 
} 
+0

Hi Miguel, 즉각적인 반응에 감사드립니다. 복잡한 DTO도 다시 보낼 수 있습니까? 특별한 마샬링이 필요합니까? - 이건 내가 우리 아이폰 전문가에게 사용하도록 설득 할 수있는 것 같지 않아. 감사합니다 – Aaron

+0

나는 DTO가 무엇을 의미하는지 모른다. –

+0

DTO = 데이터 전송 개체입니다. 일반적으로 속성 만있는 단순한 객체이며 동작이 없으므로 여러 레이어에서 데이터를 전송하는 데 사용됩니다. –

관련 문제