2014-07-23 2 views
2

서비스에 할당 할 수없는 것입니다. 그래서이 일을 위해 내가 Global.asax 파일에 코드의 다음 줄을 사용하고 (위해 Application_Start 이벤트) :유형은이 같은 인터페이스를 가지고 autofac

var builder = new ContainerBuilder(); 
     builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); 

     builder.RegisterInstance(new CategoryFacade()).As<ICategoryFacade>(); 
     builder.RegisterInstance(new TVideoFacade()).As<ITVideoFacade>(); 

     builder.RegisterType<CategoryController>(); 


     //builder.RegisterType<CategoryFacade>().As<ICategoryFacade>(); 
     //builder.RegisterType<TVideoFacade>().As<ITVideoFacade>(); 

     //builder.Register(c => new CategoryFacade()).As<ICategoryFacade>().InstancePerRequest(); 
     //builder.Register(c => new TVideoFacade()).As<ITVideoFacade>().InstancePerRequest(); 

     var container = builder.Build(); 
     var resolver = new AutofacWebApiDependencyResolver(container); 
     GlobalConfiguration.Configuration.DependencyResolver = resolver; 

하지만 다음과 같은 예외 보여주는 :

Additional information: The type 'ABC.ABCDatabase.Facades.TVideoFacade' is not assignable to service 'ABC.ABCDatabase.Abstractions.ICategoryFacade'. 

너희들이 적절한 무엇인지 말해 줄 수를 OData 컨트롤러로 autofac을 사용하는 방법. 나는 autofac에 초보자입니다.

+2

은'당신'ICategoryFacade' 인터페이스를 구현 TVideoFacade'합니까? 이 줄은 수정되어야한다고 생각합니다 :'builder.RegisterInstance (new TVideoFacade()) .As ();와'builder.RegisterInstance (new TVideoFacade())로 변경됩니다. ' – nemesv

+0

그래,이게 내 실수 야.하지만 여전히 예외를 보여주는거야. –

답변

9

TVideoFacade 클래스에서 ITVideoFacade 인터페이스를 구현하지 않았다고 생각합니다. TVideoFacade 클래스에서 ITVideoFacade 인터페이스를 구현했는지 확인하십시오.

+0

예, 그게 전부입니다. 내 하루를 저장해 주셔서 감사합니다. –

0

특정 유형을 autofac 컨테이너으로 등록하려면 다음 방법을 사용할 수 있습니다. 그러나 ABC.ABCDatabase.Facades.TVideoFacade 클래스가 ABC.ABCDatabase.Abstractions.ICategoryFacade 인터페이스를 구현했는지 확인하십시오.

builder.RegisterType<ABC.ABCDatabase.Facades.TVideoFacade>() 
      .As<ABC.ABCDatabase.Abstractions.ICategoryFacade>() 
      .InstancePerLifetimeScope(); 

비즈니스 요구 사항 및 가능성에 따라 수명 및 범위를 설정할 수 있습니다.

0

는 일을 시도 :

 
builder.Register(x => new TVideoFacade()).As&ltITVideoFacade>(); 
관련 문제