# 지식 ## 1. 코드 비하인드 패턴 - .razor 파일과 .cs 파일을 분리해서 사용하는 방식 - A.razor
├ A.razor.cs
⎿ A.razor.css ### 역할 1. .razor 파일 : 주로 UI 마크업을 포함 2. .cs 파일 : 관련 로직을 포함 - @code 블록을 대신해 서로 연결 됨 ## 2. EditForm - Blazor 제공하는 Form Compornents. - 데이터 바인딩, 유효성 검사, 폼 제출 처리에 사용 - 사용자 입력 수집하고, 입력 데이터 검증 후 서버나 클라이언트 제출하는 기능 제공 ### 1. InputText - @bind-Value 로 변수와 엮어주기
<선택사항> - @oninput 은 입력시 수행할 이벤트 엮어주기 - @onblur 는 포커스 해제시 수행할 이벤트 엮어주기 ## 3. Attribute - 변수나 클래스, 메서드 위에 [ ]를 사용해 속성을 추가 - 코드에서 어떤 동작이나 정보를 제공하거나, 특정 조건에 따라 처리되는 방식을 지정할 수 있다. - 이미 존재하는(Required, Range, Obsolte, 등) 속성들도 있지만, 사용자가 직접 정의해서 사용할 수 있다. - 2의 EditForm과 엮으면 좋음 ## 4. Dependency Injection (DI) - 의존성 관리를 쉽게 하기 위한 설계 패턴으로 객체가 필요로 하는 의존성을 직접 생성하지 않고,
외부에서 주입해주는 방식으로 객체 간 결합도를 줄이고 테스트 가능성과 유연성을 높이는 역할을 한다. - 의존성(Dependency)란? - 간단하게 한 객체가 다른 객체의 기능, 데이터를 필요로 할 때 이를 의존성이라고 한다. - A 클래스가 B 클래스의 기능을 사용하면 A는 B에 의존한다고 보면 된다. - 핵심 개념 - 제어 역전(inversion of Control) : DI도 결국 이 개념의 한 형태로서
전통적으로 객체는 스스로 필요한 의존성을 직접 생성하지만 DI에서는 외부에서 의존성 주입해 객체간 결합도 줄임 - 느슨한 결합 : DI는 클래스 간 결합도 낮추는 방법으로 객체가 다른 객체의 구체적 구현에 의존하지 않고 인터페이스나 추상 클래스에 의존하게 한다.
그로 인해 시스템의 유지보수성과 확장성을 높인다. ## 5. 싱글턴 패턴 - 가장 유명하고 자주 쓰이면서 남발하면 절대 안되는 패턴 ```csharp public class Singleton { // Lazy 선언으로 사용시에만 객체를 생성하게 하면서 외부에서 접근할 수 없는 단일 인스턴스를 저장한다. private static Lazy _instance = new Lazy(() => new Singleton()); // 외부에서 해당 인스턴스에 접근하려면 이 속성을 통해서만 접근이 가능 public static Singleton Instance => _instance.Value; private int value = 0; // 싱글턴이니까 외부에서 인스턴스 생성 불가하게 private Singleton() { // 초기화 } public int DoSomething(int value) { // 그냥 아무 동작이나 Console.WriteLine("DO SINGLETON"); this.value++; return this.value + value; } } public class Base { private void CheckSingle() { Singleton ton1 = Singleton.Instance; Singleton ton2 = Singleton.Instance; if (ton1 == ton2) Console.WriteLine("Same"); } } ```