본문 바로가기

개발언어/C#

[C#][Razor] @inject 지시문

@inject 지시문이란?


 @inject 지시문은 .razor 확장자로 만든 razor파일에서 종속성을 주입받기 위해 사용됩니다.

해당 인터페이스(서비스 유형)등을 변수(속성)로 선언해서 사용할수 있게 해준다고 생각하시면 될것 같습니다.

즉, razor 페이지에서 사용할 변수를 선언하기 위해 사용하는것이 @inject 지시문 입니다.

기본 사용법


@inject 유형 속성
유형 : 주입할 서비스의 유형입니다.
속성 : 주입된 앱 서비스를 받는 속성의 이름입니다. 변수라고 생각하시면 될것 같습니다.

* 메뉴얼에서는 속성을 생략하더라도 컴파일러가 자동으로 속성을 만들어준다고 하는데 어떤 이름으로 만들어주는지는 나와있지 않아서 해당 내용은 생략하겠습니다.

예제


@page "/customer-list"
@using Services
@inject IDataAccess DataRepository

@if (customers != null)
{
    <ul>
        @foreach (var customer in customers)
        {
            <li>@customer.FirstName @customer.LastName</li>
        }
    </ul>
}

@code {
    private IReadOnlyList<Customer> customers;

    protected override async Task OnInitializedAsync()
    {
        customers = await DataRepository.GetAllCustomersAsync();
    }
}

 

다음과 같이 3번째 라인에서 선언한 @inject IDataAccess DataRepository를 await DataRepository.GetAllCustomersAsync(); 와 같이 사용하는것을 볼 수 있습니다.