[C#]확장메소드의 사용방법

.NET | 2011. 1. 9. 01:14
Posted by Haronoid
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사의 클래스로 날자 디폴트는 "____/__/__"를 텍스트로 보존하고 있다.
 

[.NET] struct를 이용한 환경설정을 보존하는 샘플

.NET | 2010. 12. 25. 00:29
Posted by Haronoid
*Serializable을 지정한 struct를 XML형식으로 내보내는 예
[Serializable]
public struct GrobalSettings
{ // .. //}

GrobalSettings mySets;
XmlSerializer ser = new XmlSerializer(typeof(GrobalSettings));
TextWriter wr = new StreamWriter("data.xml");
ser.Serialize(wr.mySets);
wr.Close();

이것런 방식으로 Serializable가능한 구조체를 Xml형식으로 저장하고 관리하는 것이 가능하다.
저장 폴더는 어플리케이션의 정보를 어떤단위로 저장할 것인가에 따라 각각의 폴더에 저장하면 된다.
폴더 위치는 이전 포스팅에서 참조
 

[.NET] enum을 리스토로서 반복시키는 방법

.NET | 2010. 12. 25. 00:13
Posted by Haronoid
*Enum클라스를 이용해 enum으로 설정한 명칭과 값을 순서대로 가져오기위한 방법이다.
 -테이블의 컬럼명등을 enum으로 지정하면 편한데, insert문을 만들때도 enum을 반복시켜서 만들면, 일일이 쓰는 수고와 유지비용을 절감할 수 있다.
enum eCLMS
{
Top = 0
,
Middle
,
Bottom
}

foreach (eCLMS enumItem in Enum.GetValues(typeof(eCLMS)))
{
    Console.Write(Enum.Parse(typeof(eCLMS), enumItem.ToString()).ToString() + " <-");
    Console.WriteLine((int)enumItem.toString());
}

*실행결과
Top <-0
Middle <-1
Bottom <-2

활용하기에 따라 방법은 여러가지로 있을 듯하다.
 

[.NET] 시스템의 폴더정보를 얻는 방법

.NET | 2010. 12. 25. 00:08
Posted by Haronoid
*System.Windows.Forms.Application를 이용하는방법
CommonAppDataPath = C:\Documents and Settings\All Users\Application Data\{Company name}\{Program name}\{Version}
UserAppDataPath = C:\Documents and Settings\{UserName}\Application Data\{Company name}\{Program name}\{Version}
LocalUserAppDataPath = C:\Documents and Settings\{UserName}\Local Settings\Application Data\{Company name}\{Program name}\{Version}

StartupPath = {실행화일의 위치 폴더}
ExecutablePath = {실행화일의 위치 폴더+실행파일명}

*System.Environment을 이용하는 방법
CommandLine = "{실행화일의 위치 폴더+실행파일명}" 
CurrentDirectory = {실행화일의 위치 폴더}

GetFolderPath(Environment.SpecialFolder.ApplicationData)
->C:\Documents and Settings\{UserName}\Application Data

+SpecialFolder로 얻을 수 있는 폴더 리스트
Desktop <-C:\Documents and Settings\{UserName}\Desktop
Programs <-C:\Documents and Settings\{UserName}\StartMenu\Program
Personal <-C:\Documents and Settings\{UserName}\My Documents
Personal <-C:\Documents and Settings\{UserName}\My Documents
Favorites <-C:\Documents and Settings\{UserName}\Favorites
Startup <-C:\Documents and Settings\{UserName}\StartMenu\Program\StartUp
Recent <-C:\Documents and Settings\{UserName}\Recent
SendTo <-C:\Documents and Settings\{UserName}\SendTo
StartMenu <-C:\Documents and Settings\{UserName}\StartMenu
MyMusic <-C:\Documents and Settings\{UserName}\My Documents\My Music
DesktopDirectory <-C:\Documents and Settings\{UserName}\Desktop
MyComputer <-
Templates <-C:\Documents and Settings\{UserName}\Templates
ApplicationData <-C:\Documents and Settings\{UserName}\Application Data
LocalApplicationData <-C:\Documents and Settings\{UserName}\Local Settings\Application Data
InternetCache <-C:\Documents and Settings\{UserName}\Local Settings\Temporary Internet Files
Cookies <-C:\Documents and Settings\{UserName}\Cookies
History <-C:\Documents and Settings\{UserName}\Local Settings\History
CommonApplicationData <-C:\Documents and Settings\All Users\Application Data
System <-C:\WINDOWS\system32
ProgramFiles <-C:\Program Files
MyPictures <-C:\Documents and Settings\{UserName}\My Documents\My Pictures
CommonProgramFiles <-C:\Program Files\Common Files


 
블로그 이미지

Haronoid

기본적으로 프로그래밍 관련 메모를 중점으로 합니다. 자세한 설명이 결여되어 있을 가능성이 있습니다.

카테고리

분류 전체보기 (29)
프로그래밍 기본 (1)
VB&VBA (1)
JAVA (0)
ORACLE (10)
WidnowsCommandLine (2)
Excel (1)
Windows (1)
.NET (6)
MS SQL (6)