Unity/TIL

Unity Extension Method / 확장 메서드

김차루 2024. 7. 5. 21:07
 
 
 

 

 

C# Extension Method

1. 확장 메소드란?

기존 클래스의 기능을 확장하는 기법

 

확장 메소드는 클래스의 외부에서 클래스의 메서드처럼 사용할 수 있는 , 새로운 메서드를 만들 수 있는 기능이다. 이것은 보통 이미 만들어진 클래스에 새로운 메소드를 추가할 때 사용하는데

 

예를 들어, 협업 과정에서 A가 만들어둔 a 스크립트에 메소드를 추가하고 싶은데 그 스크립트에 직접적으로 수정하기 어려운 상태일 때 사용이 가능하다.

 

예시가 아니더라도 남이 만든 라이브러리나 C# 기본 제공 클래스를 수정해야 하는 일에서도 사용이 가능하다. 이 기능은 C#에서만 제공하고 있는 기능이다.  

 

public class Calculator
{
	public Calculator()
    {
    
    }
    
    public int Plus(int a, int b)
    {
    	return a+b;
    }
    
    public int Minus(int a, int b)
    {
    	return a-b;
    }
}

 

위와 같은 계산기가 있다고 하자. 지금 상황에서 Calculator의 인스턴스는 plus와 minus 밖에 없다. 이 상황에서 스크립트 수정 없이 곱하기와 나누기를 추가 하고자 한다.

public static class Extension
{
	public static int Times(this Calculator calculator, int a, int b)
    {
    	return a*b;
    }
    
    public static int Divide(this Calculator calculator, int a, int b)
    {
    	return a/b;
    }
}

 

 

주의할 점

스크립트를 보면 먼저 1. Static 으로 선언되어 있는 것을 확인할 수 있다. 정의한 클래스 내부에 확장하고 싶은 메소드는 Static으로 선언해줘야 한다. 그리고 선언부 앞에 2. this 가 있는 것을 볼 수 있다. 매개변수에 this를 포함해야지 선언된 클래스를 현재 클래스에서 확장 시킨다는 것을 알 수 있다. 

 

 

프로젝트 대입

나의 경우 프로젝트에서 추가 수정을 위한 목적으로 사용하지 않았다. 선언을 쉽게 하기 위해 추가하는 식으로 프로젝트에 사용해보았다.

UIBase
Extension