Xamarin Android和Dependecy Injection

时间:2017-10-05 14:22:02

标签: c# android xamarin dependency-injection xamarin.android

我使用Xamarin开发Android应用程序。假设我有一个Activity,它取决于某个界面:

interface IFoo
{
    // methods
}

public class Foo : IFoo
{
    private readonly IBar _bar;

    public Foo(IBar bar)
    {
        _bar = bar;
    }

    // methods implementation
}
// dependency injection somewhere in Application class
var container = new UnityContainer();
container.RegisterType<IFoo, Foo>();   

public class MyActivity : Activity
{
    // it's incorrect constructor and this code will not be compiled
    public MyActivity(IFoo foo)
    {
        _foo = foo;
    }

    private readonly IFoo _foo;
} 

我想在MyActivity的构造函数中注入IFoo的实例,但是你知道用参数创建构造函数是不可能的。我怎样才能将IFoo的初始化实例及其所有依赖项传递给MyActivity?我使用Unity作为依赖注入框架(但我可以改变它)。

1 个答案:

答案 0 :(得分:0)

在app app class中定义:

public static UnityContainer container { get; private set; }

var container = new UnityContainer();

注册您的界面

container.RegisterType<IFoo, Foo>();   

并解决如下

var myFoo = container.Resolve<IFoo>()

注意:不要忘记添加名称空间using Microsoft.Practices.Unity;