0

나는 Xamarin 안드로이드 프로젝트 솔루션에 의존성 주입을 사용하는 방법을 모르겠습니다. 현재 내 안드로이드 솔루션은 다른 클래스 라이브러리 솔루션에 대한 참조를 보유하고 있습니다. 내 서비스 계층에서 Unity를 사용하고 WebApiConfig.cs를 통해 컨테이너를 등록했습니다. 제 질문은, 시작시에 실행하기 위해 Android 측에서 Unity를 사용하는 방법은 코드가 포함 된 경우 감사하게 생각합니다. 안드로이드의 주요 활동을 통해 컨테이너를 새롭게하고 싶지 않습니다. 컨테이너가 프로세스 뒤에 등록되기를 원합니다. 예를 들어 AppStart 또는 Global asax가 MVC 앱용으로 필요합니다. Android 용으로 사용할 수 있습니까? 또한 주요 활동에서 생성자를 생성 할 수 없다는 것을 알았습니다. 나는 이것이 불가능하다고 생각하지만 클래스 라이브러리 솔루션에 대한 객체 참조를 유지하는 방법은 무엇입니까? 예를 들어 내가 시도한 예 :의존성 주입 안드로이드

private IExample _ex; 

MainActivity(IExample ex){ 
_ex = ex; //depedency Injection rather than newing it up 
} 

public void DoSomething(){ 
_ex.HelloWorld(); 
} 

속성을 통해이를 수행 할 수있는 방법이 있습니까? 또한 각 계층에 대해 현재 솔루션 종속성을 해결하기 위해 컨테이너를 설치 및 생성해야합니까? 또는 DDD 아키텍처가 외부에서 내부로 진행됨에 따라 각 계층의 모든 종속성을 해결할 안드로이드의 컨테이너를 사용할 수 있습니까?

// Must include this attribute so that Android knows we want to use this as our Application implementation 
[Application(Icon = "@drawable/Icon", Label = "@string/ApplicationName")] 
public class MyApplication : Application 
{ 
    public override void OnCreate() 
    { 
     base.OnCreate(); 

     // Do your DI initialization/registration here 
    } 
} 

난 당신이 주요 활동에 생성자를 만들 수 없다는 뜻을 정확히 모르겠어요 : 당신이 그렇게 같은 사용자 정의 응용 프로그램 구현을 만들 수 있습니다 시작시 DI를 설정하는 측면에서

답변

0

. 느끼는 모든 활동에 대한 생성자를 만들 수 있습니다. 사람들은 초기화 로직을 OnCreate에 넣는 경향이 있기 때문에 언제나 그것을 볼 수는 없습니다.

+0

안녕하세요. 메시지를 보내 주셔서 감사합니다. 해당 구현을 사용하여 사용자 지정 응용 프로그램을 만든 후에는 다른 클래스 또는 주 활동에서 초기화하지 않고도 런타임에 사용자 지정 응용 프로그램이 실행됩니까? –

+0

당신이해야 할 일은 Android에 클래스를 사용자 지정 응용 프로그램 구현으로 사용한다고 말하기 만하면됩니다. AndroidManifest.xml 파일에서 수동으로 지정하거나 [Application ...] 속성을 사용하여 컴파일러에서 자동으로 수행 할 수 있습니다. 이렇게하면 운영 체제는 명시 적으로 호출하지 않고도 시작할 때 OnCreate 메서드를 자동으로 호출합니다. DI 설정/등록과 같은 "응용 프로그램 전체"초기화를 수행 할 수 있습니다. – EJoshuaS