Autofac null服务解决异常

时间:2016-08-09 12:42:05

标签: c# inversion-of-control autofac

我的解决方案中有一个3项目: 便携式图书馆(适用于ios,Android和winphones),图书馆项目(适用于Windows手机)和Windows手机测试项目。我的图书馆项目参考了便携式图书馆项目,我的windows phone测试项目参考了便携式和winphone库项目。在我的便携式库项目中,我得到了一些我在库winphone项目中实现的服务接口。在我的便携式项目中,我希望有一些类具有我在windows phone库中实现的服务字段,并在windows phone测试项目中使用此类。要做到这一点,我尝试使用Autofac库,在我的Windows手机库中注册类型(为此我用静态ctor创建类)并尝试解析我在我的Windows手机库中注册的便携式库类中的服务,但我得到了null异常,我不知道如何解决这个问题,并且可以做我实际尝试做的事情?

我的类来自可移植库项目,在调用Resolve方法之后我会异常。

    public IDeviceInformation DeviceInformation { get; }

    public Logger()
    {
        DeviceInformation = AutofacContainer.Instance.Resolve<IDeviceInformation>();
    }

来自图书馆项目的课程

public class AutoFacRegister
{

    static AutoFacRegister()
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<WindowsDeviceInformation>()
            .As<IDeviceInformation>();
        AutofacContainer.Instance = builder.Build();
    }
}

1 个答案:

答案 0 :(得分:0)

我建议不要使用static构造函数来创建容器。我怀疑构造函数从未被调用,因为AutoFacRegister类没有在任何地方使用,因此AutofacContainer.Instance将始终为null。

我建议您使用modules来实现目标。