0

我不知道如何在Xamarin Android项目解决方案上使用依赖注入。目前我的Android解决方案可以引用另一个类库解决方案。我在服务层使用了Unity,并通过WebApiConfig.cs注册了容器。 我的问题是,如何在Android上使用Unity以便在启动时运行,如果包含代码,将不胜感激。我不想通过Android的主要活动来新建容器。我希望容器在进程后注册,例如AppStart或Global asax,它为您提供MVC应用程序。有没有办法为Android做到这一点?另外我注意到主要活动我无法创建构造函数。我猜这不是可能的,但我怎么去保持对我的类库解决方案的对象引用?我试图做的例子:依赖注入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