• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    미해결

종속성 주입

22.09.05 16:40 작성 조회수 186

1

강의에서 C# 파일로부터 코드를 레이저페이지로 가져오는 방법에 대해 2가지로 설명해 주셨는데 종속성 주입의 이유로 두번째 방법이 좋다고 해주셨습니다. 검색을 통해 종속성 주입에 대한 내용은 학습하였는데 어떻게 종속성 주입이 되는지 확실하지가 않아 문의드립니다. 예를들어 Test 클래스의 자식클래스를 만들게 된다면 첫번째 방법에서는 "Test test = new Test()" 를 했기때문에 저 코드가 적힌 모든 부분을 바꾸어주어야하지만 두번째 방법으로는 Program.cs에서 AddScoped<Test> 부분만 바꾸어주면 되기에 종속성이 줄어든다고 이해하면 될까요??

답변 2

·

답변을 작성해보세요.

0

친절한 답변 감사합니다!

아직 제 실력이 부족해 완벽하게 이해하지는 못했지만 기억해 두었다가

공부하면서 점점 더 이해할 수 있도록 노력해보겠습니다

0

굉장히 난이도가 있는 질문을 주셔서 당황하였지만, 최대한 아는만큼 설명을 드린다면....

 

  • 일반적인 클래스로 불러오는 방법과 종속성 주입(DI)으로 불러오는 방법에 있어서 코드 길이나 순서적인 측면에 있어서는 크게 좋다고 보기는 어렵습니다. 왜냐하면

  • 일반 클래스는 cs 파일 생성 -> 클래스 구성 -> razor 또는 cs파일에서 폴더 @using -> 클래스 쓰기

  • DI는 cs 파일 생성 -> 클래스 구성 -> Program.cs에 서비스 등록 -> razor 또는 cs파일에서 @inject 하기 -> 클래스 쓰기

  • 이와 같이 과정이 짧거나 하지는 않기 때문입니다. 그럼에도 불구하고 강의에서 제가 종속성 이 좋다고 말씀드린 이유는 다른 외국 프로그래머나 공식 문서에서 권장을 하기 때문입니다. 또한 서비스에 등록하면 홈페이지가 진행되는 동안은 어디에서나 공유할 수 있고 불러올 수 있는 점은 일반 클래스 가져오기와는 다른 특징이기 때문에 어떤 서비스를 따로 빼놓을 것인지에 따라 둘 중 적절하다고 생각 되는 것을 사용하시면 될 것 같습니다.

질문 창에서 말씀 주신 것 중 자식 클래스를 만든다고 하신다면 두가지 다 동일하게 사용할 페이지에서 자식 클래스를 불러 와 주시면 부모에도 접근이 가능합니다.imageimage

** 추가로 레이저 파일에서 불러오기 전, cs 파일에서 다른 클래스를 불러오기 위해서는 아래와 같은 형식을 따릅니다. 데이터 베이스와 연결할 때 도 이 같은 형식을 보실 수가 있습니다. (중간의 Class new 는 필요가 없습니다.)

image

또는 components를 추가하고 데이터어노테이션 형식으로 cs파일안의 DI를 쉽게 가져올 수도 있습니다.
image중간에 거친 DI를 레이저에서 쓰기 위해서는 세컨드클래스도 서비스로 등록해 주셔야 합니다.

+++++++++++++++++++++++++++++++++++++++

요약하자면 종속성으로 클래스를 불러온다 해서 큰 장점은 없습니다. 다만 많은 복잡한 기능 (예 : 데이터베이스)들이 등록해야만 기능이 지속되는 경우가 있어서 자주 사용하게 된다는 점 입니다.