[c#]

KWON DEV·2025년 11월 5일

대리자

delegate : 메서드를 안전하게 캡슐화하는 형식
Func : 반환값이 있는 메서드 캡슐화 : 제네릭이 들어가며, 마지막 매개변수는 반환값
Action : 반환값이 없는 메서드 캡슐화 : 제네릭에 대리하려는 메서드 매개변수 할당
Predicate : 조건에 따라 bool 값을 반환하는 메서드 캡슐화
Comparison : 두 값을 비교하고 정렬순서를 나타내는 int 반환
Event : 이벤트의 추가(+=) 및 제거(-=)만 가능하다. 할당이 불가능하다.(= 으로 이벤트 할당 불가), 클래스 외부에서 직접 이벤트를 호출할 수 없다.

virtual

 부모 클래스에서 virtual 키워드를 사용하여 함수를 만들면, 자식 클래스에서 이 함수를 재정의 할 수 있도록 허용

Critical Section (임계영역):

다중 쓰레드 환경에서 여러 쓰레드가 동시에 접근하면 문제가 발생할 수 있는 공유 자원이나 코드 블록
이를 잘 관리하지 않으면 Race Condition (경합상태) 발생
lock
monitor
	Pulse: 대기중 스레드에 알림
    Wait: 신호대기
mutex
	WaitOne() : 뮤텍스 점유 기다림
semaphore

Task:

  Run() : 무거운 연산처리 작업 : 가벼운 쓰레드풀 사용
  Factory.StartNew() : Task.Run에서 더 다양한 지원
  	TaskCreationOptions:
    	LongRunning : 새로운 쓰레드를 생성해서 작업
        AttachedToParent : 부모작업 동기적 대기
  WhenAll(Task1, Task2) : 여러 개의 `Task` 객체가 모두 완료될 때까지 기다리고자 할 때

ConfigureAwait(false) :

	Context swiching 이 일어나지 않고 남는 쓰레드 풀에서 실행

CancelationTokenSource:

					cancel() : 비동기 중지
                    Dispose() : 자원 삭제
                    token : 비동기 상태 토큰
                    ThrowIfCancelationRequested() : 취소요청시 예외처리 발생 (OperationCanceledException) 
                    IsCannellationRequested() : 취소시 true 반환
                    

Reflection :

Assembly의 내용을 확인(메서드, 속성, 생성자 등)의 내용을 확인하거나 검사하려는 경우 사용, 인스턴스의 데이터 타입에 대한 정보 확인
애플리케이션을 개발할 때, 디버깅 또는 런타임에 알 수 없는 객체의 동작을 분석하기 위해 사용하거나 외부 라이브러리에 존재하는 클래스 및 메서드를 분석
GetType() : 객체의 데이터 타입 반환

Property() : 
	GetCustomAttributes() : 속성에 추가된 어트리뷰트 가져오기
    	OfType<T> : 해당 어트리뷰트를 추가한 프로퍼티 가져오기
	

Attribute :

코드 요소(클래스, 메서드, 속성 등) 추가적인 정보를 제공하는 메타데이터
이를 통해 컴파일러를 수행하거나 코드에 대한 추가정보를 활용할 수 있다.

*메타데이터 제공: 코드에 대한 추가정보 제공
*컴파일러 지시: 컴파일러 동작을 제어
*런타임 정보
*재사용 가능

메소드 
	[Obsolete] 선언시: 더이상 사용하지 않는다 표기
	[Conditional(환경)] 선언시: 해당 환경일때만 실행
매개변수: 반드시 선택적 매개변수로 선언
	[CallerMemeberName] : 호출한 메서드 반환
    [CallerFilePath]: 호출한 메서드의 파일 위치
    [CallerLineNumber]: 호출된 메서드의 라인넘버

Attribute 만들떄
AttributeUsage(AttributeTargets.범위) : 어트리뷰트 범위설정

Interceptor :

Nuget Package -> Castle.core 설치
Interceptor 상속 : Invocation.Proceed() 
ProxyGenerator
	CreateClassProxyWithTarget(서비스, 인터셉터)

서비스 클래스에 virtual 키워드 사용

Dependency Injection

 Nuget Package에서 Microsoft.Extensions.DependencyInjection 설치
 
 컨테이너 생성
 IServiceCollection
 	AddTransient<> : 의존성 주입할때 매번 새로운 인스턴스 생성
    AddSingleton : 어플리케이션 전체에서 하나만 생성
    AddScoped : 스코프 내에서 인스턴스 생성
 
 컨테이너 빌드
 IServiceProvider
 	= service.BuildServiceProvider()
    .getRequiredService
    

API 통신

HttpClient() : API 통신을 위한 함수
	.GetAsync("url") : Get방식 호출
    
Response.ReadAsStringAsync(): 리스펀스 값 읽기

{이름}Controller : 컨트롤러 경로{이름}으로 됨
HttpGet("{PathParameter:int}") : 패스파라미터 설정
리턴형식을 ActionResult<타입> 으로 설정시 오류코드(ex: NotFound()) 반환가능
profile
초보개발자

0개의 댓글