대리자

대리자는 어떤 메서드를 호출하는 방법을 담은 객체이다. 대리자 형식은 그 형식의 인스턴스, 즉 대리자 인스턴스가 호출할 수 있는 종류의 메서드를 정의한다. 

 


 

대리자를 이용한 플러그인 메서드 작성

대리자 변수에서 메서드를 배정하는 연산은 실행 시점에서 일어난다. 따라서 대리자는 플러그인 메서드를 구현하기에 좋은 수단이다. 다음 예제를 보자. 

 

위 예제처럼 Square의 메서드를 매개변수로 넘길수도 있다.

 

 


대리자 다중 캐스트

모든 대리자 인스턴스에는 다중 캐스트 능력이 있다. 무슨 말이냐 하면, 하나의 대리자 인스턴스가 하나의 대상 메서드가 아니라 여러 개의 대상 메서드를 지칭할 수 있다는 것

 


 

표준 Func 대리자와 Action 대리자

Func 

리턴 타입이 있는경우

Func <T>은리턴 타입이 Generic폼 내에, 즉 템플릿 파라미터 안에 존재한다. T는 리턴 값의 타입을 가리킨다. 경우 Func <T, TResult>, 입력이 2개인 경우 Func<T1, T2, TResult> 를 사용한다.

 

Func<T, T2,  TResult>은 어떻게 쓸까?

TResult는 out키워드가 있는데 밑에 설명 그대로 반환하는 메서드를 캡슐화한다고 한다.  그럼 대충 눈치가 챌 수 있다. 

 

 

Action 

리턴 값이 없는 경우

System네임스페이스에서 제공되고, 파라미터의 수에 따라 0개부터 16개까지 파라미터를 받아들이는 delegate가 있다.

Action <T> delegate, 2개인 Action <T1, T2> delegate....

 

 

 

 

 

 

+ Recent posts