0

빠른 IoC 컨테이너를 찾고 Dynamo.IoC를 찾았습니다.dynamo.ioc - 생성자 주입 예제가 필요합니다

간단한 ServiceLocator처럼 쉽게 만들 수 있지만 생성자 삽입에 어떻게 사용합니까? 여기

private interface ITestInterface 
    { 

    } 

    private class TestClass : ITestInterface 
    { 

    } 

    private class TestClassWithDependency 
    { 
     public ITestInterface DependecyInstance { get; private set; } 

     public TestClassWithDependency(ITestInterface dependencyInstance) 
     { 
      DependecyInstance = dependencyInstance; 
     } 
    } 

예를 들어, 클래스 그리고 실패한 테스트 당신이 인터페이스와 paramaterised 생성자 클래스를 등록 할 필요가 있다고 생각

[Test] 
    public void Test_Container_Resolve_WithDependency() 
    { 
     Container.Register<ITestInterface, TestClass>(); 

     var obj = Container.Resolve<TestClassWithDependency>(); 


     obj.Should().NotBeNull(); 
     obj.DependecyInstance.Should().NotBeNull(); 
    } 
+0

는 IOC는 컨테이너 (http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison) [여기 좋은 성과 기준이다]. – Steven

답변

0

있습니다. 그런 다음 평소처럼 등록하십시오. 등록 유형 및 "dependencyInstance"주입 할 수 있습니다. 아래를 봐주세요.

public interface ITestInterface 
{} 

public class TestClass : ITestInterface 
{} 

public interface ITestClassWithDependency { 
    ITestInterface DependecyInstance { get; } 
} 

public class TestClassWithDependency : ITestClassWithDependency 
{ 
    public ITestInterface DependecyInstance { get; private set; } 


    public TestClassWithDependency(ITestInterface dependencyInstance) 
    { 
     DependecyInstance = dependencyInstance; 
    } 
} 

public class MyClass 
{ 
    [Test] 
    public void Test_Container_Resolve_WithDependency() 
    { 
     using (var container = new IocContainer()) 
     { 
      container.Register<ITestInterface, TestClass>(); 
      container.Register<ITestClassWithDependency, TestClassWithDependency>(); 

      var obj = container.Resolve<ITestClassWithDependency>(); 

      Assert.IsNotNull(obj); 
      Assert.IsNotNull(obj.DependecyInstance); 
     } 

    } 
}