2016-08-09 2 views
0

내 솔루션에 3 개의 프로젝트가 있습니다. 휴대용 라이브러리 (ios, android 및 winphones 용), 라이브러리 프로젝트 (Windows 전화 용) 및 Windows Phone 테스트 프로젝트. 내 라이브러리 프로젝트에 휴대용 라이브러리 프로젝트에 대한 참조가 있고 Windows 전화 테스트 프로젝트에 휴대용 및 winphone 라이브러리 프로젝트에 대한 참조가 있습니다. 필자의 휴대용 라이브러리 프로젝트에서는 라이브러리 winphone 프로젝트에서 구현 한 몇 가지 서비스 인터페이스가 있습니다. 휴대용 프로젝트에서 필자는 Windows Phone 라이브러리에서 구현하고 Windows Phone 테스트 프로젝트에서이 클래스를 사용하는 서비스가있는 필드가있는 클래스를 원합니다. 이 작업을 수행하려면 Autofac 라이브러리를 사용하여 Windows Phone 라이브러리에서 유형을 등록한 다음 (정적 Ctor로 클래스를 만들었습니다) Windows 휴대용 라이브러리에 등록한 휴대용 라이브러리 클래스에서 서비스를 확인하려고 시도하십시오. null 예외와 나는 그것을 고치는 법을 모른다. 그리고 내가 실제로하려고 노력하고있는 일을하는 것이 가능하다?Autofac null 서비스 해결 예외

이동식 라이브러리 프로젝트의 내 클래스입니다. 호출 후 해결 방법 예외적입니다.

public class AutoFacRegister 
{ 

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

답변

0

내가 컨테이너를 만들 static 생성자를 사용에 대해 권하고 싶습니다 라이브러리 프로젝트에서

public IDeviceInformation DeviceInformation { get; } 

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

클래스입니다. AutoFacRegister 클래스가 아무데도 사용되지 않으므로 AutofacContainer.Instance은 항상 null이므로 생성자가 호출되지 않는다고 생각합니다.

목표를 달성하려면 modules을 사용하는 것이 좋습니다.