0

Я не уверен, как использовать инъекцию зависимостей в решении Xamarin Android. В настоящее время мое решение для Android содержит ссылку на другое решение библиотеки классов. Я использовал Unity на моем уровне обслуживания и зарегистрировал контейнер через WebApiConfig.cs. Мой вопрос: как я могу использовать Unity на стороне Android для запуска при запуске, было бы признательно, если бы код был включен. Я не хочу обновлять контейнер через основную деятельность Android. Я хочу, чтобы контейнер регистрировался за процессом, то есть AppStart или Global asax, где он делает это для вас для приложений MVC. Есть ли способ сделать это для Android? Также я заметил, что в главной операции я не могу создать конструктор. Я предполагаю, что это невозможно, но как мне взять ссылку на объект для моего решения библиотеки классов? пример, который я попытался сделать:Injection Dependency Android

private IExample _ex; 

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

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

Есть ли способ сделать это через Атрибут? Также для каждого из моих слоев мне нужно установить и создать контейнер, чтобы разрешить текущую зависимость от решения? или я могу использовать контейнер от android, который разрешил бы всю зависимость в каждом слое, поскольку архитектура DDD переходит от внешнего к внутреннему?

ответ

0

С точки зрения настройки DI при запуске вы можете создать реализацию пользовательских приложений, как так:

// 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 
    } 
} 

я не уверен, что именно вы имеете в виду, не будучи в состоянии создать конструктор по основной деятельности , Вы можете создавать конструкторы для любой деятельности, которая вам нравится. Вы не всегда это видите, потому что люди склонны ставить свою логику инициализации в OnCreate.

+0

Привет, спасибо за сообщение. Как только я создал собственное приложение с его реализацией, настраивается ли пользовательское приложение во время выполнения без необходимости инициализации из другого класса или из главной операции? –

+0

Единственное, что вам нужно сделать, это сказать Android, что вы хотите использовать свой класс в качестве пользовательской реализации приложения. Вы можете указать это вручную в файле AndroidManifest.xml или использовать атрибут [Application ...], чтобы компилятор сделал это за вас. Как только вы это сделаете, операционная система автоматически вызовет метод OnCreate при запуске без необходимости его явного вызова; вы можете выполнить инициализацию «всего приложения», например, установку/регистрацию DI. – EJoshuaS