수색…


비고

Autofac 은 Microsoft .NET 4.5, Silverlight 5, Windows Store 응용 프로그램 및 Windows Phone 8 응용 프로그램을위한 IoC 컨테이너 입니다. 클래스 간의 종속성을 관리하여 크기와 복잡성이 증가함에 따라 응용 프로그램을 쉽게 변경 유지할 수 있습니다. 이는 일반 .NET 클래스를 구성 요소로 처리하여 수행됩니다.

위키 백과에서 :
소프트웨어 엔지니어링에서 IoC (Inversion of Control)는 컴퓨터 프로그램의 사용자 지정 부분이 일반 프레임 워크에서 제어 흐름을 수신하는 디자인 원칙입니다. 이 디자인을 갖춘 소프트웨어 아키텍처는 전통적인 프로 시저 프로그래밍과 비교하여 컨트롤을 반전시킵니다. 전통적인 프로그래밍에서는 프로그램 목적을 표현하는 사용자 지정 코드가 일반 작업을 처리하기 위해 재사용 가능한 라이브러리를 호출하지만 컨트롤의 반전을 사용하면 프레임 워크입니다 사용자 지정 또는 작업 관련 코드를 호출합니다.

Autofac 설치하기

프로젝트에서 Autofac을 사용하려면 NuGet Package Manager에서 Autofac을 설치하기 만하면됩니다. Autofac을 사용할 솔루션을 연 다음 Manager NuGet Packages for Solution... 를 선택하십시오.

Tools -> NuGet Package Manager -> Manager NuGet Packages for Solution...

NuGet-Solution 탭에서 검색 상자에 "Autofac"을 입력하십시오. "찾아보기"섹션에 있는지 확인하십시오. 아래 이미지와 같이 첫 번째 옵션을 설치하십시오 (이미지의 표시된 부분을 기록해 두십시오).

너겟 - 오토 팩

NuGet을 통해 설치하면 설치 중에 선택한 프로젝트의 참조에 Autofac이 자동으로 추가됩니다.

공식 문서를보십시오 .

자동 주차 설정하기

이 예는 시작 방법을 보여줍니다 제어의 Inverion가 밀접하게 다음, 비교적 간단한 프로젝트 Autofac를 사용 하기 시작 받고 공식 문서를.

  1. File -> New -> Project -> Console Application

  2. 이 프로젝트에 대해 Autofac을 설치하십시오. 여기를 살펴볼 수 있습니다. Autofac 설치하기

  3. 다음과 같은 이름으로 2 개의 인터페이스와 2 개의 클래스를 추가하십시오.

      Interfaces  |  Classes
    --------------------------
    IOutput       | ConsoleOutput (implementing IOutput)
    IDateWriter   | TodayWriter (implementing IDateWriter)
    

단순화하기 위해 using 문 및 네임 스페이스는 표시되지 않습니다.

IOuput.cs

public interface IOutput
{
    void Write(string content);
}

ConsoleOutput.cs

public class ConsoleOutput : IOutput
{
    public void Write(string content)
    {
        Console.WriteLine(content);
    }
}

IDateWriter.cs

public interface IDateWriter
{
    void WriteDate();
}

TodayWriter.cs

public class TodayWriter : IDateWriter
{
    private IOutput _output;

    public TodayWriter(IOutput output)
    {
        _output = output;
    }

    public void WriteDate()
    {
        _output.Write(DateTime.Today.ToShortDateString());
    }
}

지금까지 코드는 간단하고 간단했습니다. 자동 의존성 주입이 이루어지는 부분에 도달 할 수있게 해줍니다. 물론 Autofac이이를 수행합니다!

Program.cs 파일의 Program 클래스를이 코드로 바꿉니다 ( Program 클래스는 프로젝트 생성시 Visual Studio에서 자동으로 생성됩니다. 존재하지 않으면 계속 진행하십시오).

class Program
{
    private static IContainer Container { get; set; }

    static void Main(string[] args)
    {
        var builder = new ContainerBuilder();
        builder.RegisterType<ConsoleOutput>().As<IOutput>();
        builder.RegisterType<TodayWriter>().As<IDateWriter>();
        Container = builder.Build();

        WriteDate();
    }

    public static void WriteDate()
    {
        using (var scope = Container.BeginLifetimeScope())
        {
            var writer = scope.Resolve<IDateWriter>();
            writer.WriteDate();
        }
    }
}

실행하면 출력은 콘솔의 현재 날짜 여야합니다. 프로젝트에서 Autofac을 사용하여 종속성을 자동으로 주입했습니다.

후드 내부에서 진행되는 작업은 다음과 같습니다.

  1. 응용 프로그램을 시작할 때 ContainerBuilder 만들고 구성 요소를 함께 등록합니다. 구성 요소는 인터페이스를 구현하는 .NET 유형이므로 일부 서비스 를 노출 합니다 . 서비스와 구성 요소를 읽습니다.

  2. 그런 다음 구성 요소 (클래스)를 노출하는 서비스 (인터페이스)로 등록 합니다. Autofac이 등록되면 인터페이스가 해석 될 때 생성 할 클래스의 인스턴스를 알게됩니다.

  3. 마지막으로 프로그램을 실행할 때 :

    • WriteDate() 메소드 (의 Main() )를위한 요청 Autofac IDateWriter .
    • Autofac는 것을보고 IDateWriter 지도하는 TodayWriter 그래서 만들기 시작 TodayWriter .
    • Autofac은 TodayWriter 가 생성자에서 TodayWriter 필요로 IOutput 것을 IOutput 됩니다.
    • Autofac은 IOutputConsoleOutput 매핑되므로 새로운 ConsoleOutput 인스턴스를 생성합니다.
    • Autofac는 새로운 사용 ConsoleOutput 건설 완료 인스턴스를 TodayWriter .
    • Autofac는 완벽하게 구성 반환 TodayWriter 에 대한 WriteDate() 소비 할 수 있습니다.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow