2014-09-26 2 views
1

WFF 클라이언트 채널을 autofac에 등록하고 싶습니다. 그래서 서비스 계약 인터페이스를 생성자에 포함 시키면됩니다. 같은 : autofac으로 WCF 클라이언트 채널 등록하기

public LoginFormController(ILoginService loginService) 
    { ... 

나는 하나의 공공 일반적인 방법으로 저를위한 채널을 만드는 공장, 한 : '내가 할 수있는

Builder.RegisterType<ClientChannelManager>().As<IClientChannelManager>(); 

: 내 공장을

public T GetChannel<T>() 

등록 내 클라이언트 채널을 등록 할 구문이 있는지 확인하십시오. 이 작품,하지만 내가 원하지 않는 것을 :

Builder.Register(c => new ClientChannelManager(new SettingsProvider()).GetChannel<ILoginService>()).As<ILoginService>(); 

대신 ClientChannelManager와 생성자 인자의 새로운 인스턴스를 생성, 나는 싶지는 컨테이너에서 해결.

내가 명시 적으로 컨테이너에서 인스턴스를 해결 내 공장에서 정적 GETCHANNEL 방법입니다 때우기 최고 : 정적 메서드 호출과의 서비스 계약을

public static T ResolveChannel<T>(IComponentContext context) 
    { 
     IClientChannelManager manager = context.Resolve<IClientChannelManager>(); 
     return manager.GetChannel<T>(); 
    } 

그리고 등록 :

Builder.Register(c => ClientChannelManager.ResolveChannel<ILoginService>(c)).As<ILoginService>(); 

누구나보다 세련된 구문/솔루션을 알고 계실 것입니다.

답변