[C#]확장메소드의 사용방법
.NET |
2011. 1. 9. 01:14
C# 3.0부터 추가된 기능으로 확장메소드라는 기능이 있다. 일시적으로 대상클래스에 추가메소드를 정의해 사용하는 방법인데, 잘 쓰면 하나의 기능추가를 위해 기존 기능을 상속받아 구현할 필요까지는 없게해주는 편리한 도구라고 할 수 있다.
파라메터에 this를 넘겨주면 자동적으로 대상 클래스의 뒤에 확장 메소드를 사용할 수 있다.
아래는 GcDate라는 클래스로부터 얻는 문자열을 가공해서 에러의 위험을 피하기위한 샘플 코드이다.
//클래스명은 아무거나 상관없지만 되도록이면 알기쉬운 클래스명이면 좋을 것이다.
public static class GcDateUtil
{
//추가할 확장메소드(GcDate형 변수에서 사용할 수 있다.)
public static string GetText(this GcDate dtmDate)
{
string rtnText = dtmDate.Text;
rtnText = rtnText.Replace("/", "").Replace("_", "");
if (rtnText.Length == 0)
{
return dtmDate.Text;
}
else
{
return dtmDate.Value.GetValueOrDefault().ToString("yyyy/MM/dd");
}
}
}
사용예
GcDate dtmA = new GcDate();
GcDate dtmB = new GcDate();
dtmA.Value = DateTime.now();
dtmA.Text = "";
string strA = dtmA.GetText();
string strB = dtmB.GetText();
結果
strA <- "2011/01/07"
strB <- "____/__/__"
+GcDate클래스는 GraphCity사의 클래스로 날자 디폴트는 "____/__/__"를 텍스트로 보존하고 있다.