728x90
서비스 규모가 커지면 나름의 필요에 따라서 메소드를 임의로 추가해서 공용으로 쓸일이 생기기도 합니다.
이때 임의로 특정함수를 추가할 수 있는데 static클래스로 추가하여 공용으로 사용할만한 함수를 추가 할 수 있습니다.
아래의 예시를 참고하여 사용법을 알아보겠습니다.
ExtentionMethod.cs
CutString
string형식의 문자열을 사용할 경우에 CustString확장메소드를 이용하고 loc변수를 붙이면 loc까지 문자열의 길이를 잘라냅니다.
문자열의 길이가 자르려는 길이보다 작을 경우 문자열을 반환합니다.
GetLastValue
List<string> 형식의 배열에서 맨 마지막 요소만 가져옵니다.
HasDataColumn
where조건으로 List형의 DataType을 DataTable인 것만 한정 했으며 내부의 요소중에 컬럼이 있는지 체크합니다.
public static class ExtentionMethod
{
// string형식의 문자열을 loc 길이까지 줄여서 return시킴
public static string CutString(this string str, int loc)
{
string cut_str = string.Empty;
if (str.Length > loc)
cut_str = str.Substring(0, loc);
else
cut_str = str;
return cut_str;
}
// List<string>의 배열에서 마지막 요소만 가져옴
public static string GetLastValue(this List<string> lst)
{
string result = string.Empty;
if (lst.Count > 0)
result = lst[lst.Count - 1];
return result;
}
// List<DataTable>의 배열에서 Column이 있는지 체크
public static bool HasDataColumn<T>(this List<T> lst) where T: DataTable
{
if (lst.Count > 0 && lst[0].Columns != null && lst[0].Columns.Count > 0)
{
return true;
}
return false;
}
}
함수 정의 이후의 MathodName(this {DataType} {param}, {param2}, {param3} ...) 영역에서 DataType은 확장메소드를 추가할 DataType이며, param은 DataType에 해당하는 값입니다. 그리고 그 이후에 추가 가능한 param2, param3은 함수를 사용할 때 추가 할 변수값 입니다.
확장메소드는 static클래스 안에서만 정의가 가능합니다.
사용 예시
CutString
string cut_result = "사과나무".CutString(2);
// 결과 : "사과"
string cut_result2 = "사".CutString(2);
// 결과 : "사"
GetLastValue
List<string> list = new List<string>() { "Tiger", "Lion", "Hippo" };
string last_value = list.GetLastValue();
// 결과 : "Hippo"
HasDataColumn
List<DataTable> list = new List<DataTable>();
bool result = list.HasDataColumn();
// 결과 : false
List<DataTable> list = new List<DataTable>();
DataTable dt = new DataTable();
dt.Columns.Add("name", typeof(string));
dt.Columns.Add("year", typeof(int));
// 결과 : true
728x90
'C#' 카테고리의 다른 글
C# - DataTable 사용법(1) - 컬럼생성, 데이터 삽입, 조회 (0) | 2021.07.23 |
---|---|
C# - this 메소드를 이용한 클래스 구현 (0) | 2021.07.22 |
C# - List 기본함수 사용법(Add, AddRange, Contains, Clear, IndexOf, Remove, RemoveAll, Reverse, ToArray, Sort) (0) | 2021.07.14 |
C# - Get Set의 사용법, 의미 (0) | 2021.07.12 |
C# - Xml파일 제어, Xml파싱 (0) | 2021.07.08 |
댓글