2012-02-17 2 views
2

이의 다음 코드Autofac는 -이</p> <pre><code>var service = c.Resolve<IHandle<Command1>>(); </code></pre> <p>같은 서비스가이 가능하다조차 해결하고 싶습니다

public class Handler : IHandle<ICommentInfo>{} 

public class Command1 : ICommentInfo{} 

public interface ICommentInfo{} 

public interface IHandle<T> where T : class{} 

보자 일반적인 인터페이스에 의해 서비스를 해결? 나는이 구성

builder.RegisterType<Handler>().As<IHandle<ICommentInfo>>(); 

는하지만이 예외

The requested service 'Icp.Test.QuerySpec.Class1+IHandle`1[[Icp.Test.QuerySpec.Class1+Command1, Icp.Test.QuerySpec, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' has not been registered. To avoid this exception, either register a component to provide the service, check for service registration using IsRegistered(), or use the ResolveOptional() method to resolve an optional dependency. 
납니다 시도

답변

0

왜이에

ContainerBuilder builder = new ContainerBuilder(); 
builder.RegisterType<LocalCommand>().As(typeof (ICommentInfo)); 
builder.RegisterType<Handler>().As(typeof(IHandle<ICommentInfo>)); 
var c = builder.Build(); 
var handler = c.Resolve<IHandle<ICommentInfo>>(); 
0
bulider.RegisterSource(new ContravariantRegistrationSource()); 

스위치를 사용하지 않으려는 않습니다 행동.

관련 문제