2009-09-05 3 views
0

여기 내 시나리오입니다 :서비스 양식을 확인할 때 종속성을 주입하는 방법 WindsorContainer?

public interface ISampleProvider<TEntity> 
{ 
TEntity Entity{get;} 
} 

여기에이 인터페이스의 구현입니다 : 가 나는 ISampleProvider 인터페이스가

public class SampleProvider<TEntity>:ISampleProvider<TEntity> 
{ 
public SampleProvider(TEntity entity) 
{ 
Entity=entity; 
} 
public TEntity Entity 
{ 
get;private set; 
} 
} 

내가에서 해결하는 경우 SampleProvider로 엔티티를 주입하고 싶습니다 WindsorContainer 그래서 나는이 쓴 :

var container=new WindsorContainer(); 
container.AddComponent("smaple_provider",typeof(ISampleProvider<Person>),typeof(SampleProvider<Person>)); 
var arguments=new Hashtable{{"entity",new Person()}}; 
var sampleProvider=container.Resolve<ISampleProvider<Person>>(arguments); 

을하지만 일하는 아니에요 g 및 "구성에서 사이클 검색"이라는 종속성 해결 프로그램 예외가 throw됩니다.

분명히 뭔가 잘못하고 있습니다.

답변

2

는이 테스트는 나를 위해 잘 작동 윈저 2.0 ... 이 있는지 확인하십시오 :

[TestFixture] 
public class SampleProviderTests { 
    public interface ISampleProvider<TEntity> { 
     TEntity Entity { get; } 
    } 

    public class SampleProvider<TEntity> : ISampleProvider<TEntity> { 
     public SampleProvider(TEntity entity) { 
      Entity = entity; 
     } 

     public TEntity Entity { get; private set; } 
    } 

    public class Person {} 

    [Test] 
    public void test() { 
     var container = new WindsorContainer(); 
     container.AddComponent("smaple_provider", typeof(ISampleProvider<Person>), typeof(SampleProvider<Person>)); 
     var arguments = new Hashtable { { "entity", new Person() } }; 
     var sampleProvider = container.Resolve<ISampleProvider<Person>>(arguments);    
    } 
} 
관련 문제