반응형



중국 광저우 아시안게임 보느니라 정신을 놓고 있네요.

선수들 전부 다 잘 해줄 것이니 …

각설하고, 오늘 해볼 것은

프로젝트가 다른, 다시 말해 네임스페이스를 달리하는 Class Library  사용법을 해 보도록 하겠습니다.

별거 없지만… 그래도 모르는 분도 있을 것이며,

이게 능수 능란하지 않으면 공개 소스들 보고도 귀찮은 상황이 벌어지기도 합니다.

자 그럼 따라 해 볼까요?

일단 새 프로젝트를 만들고




현재 솔루션 탐색기는 이런 모양입니다.




솔루션 탐색기에서 아래 그림을 따라 실행 하세요




솔루션(Solution ‘ClassLibrary2) > 추가(Add) > 새 프로젝트(New Project) 랍니다.

프로젝트 추가 창이 뜨면  Windows Phone Class Library 템플릿으로 새로운 프로젝트를 만들어 봅시다.





그리고 솔루션 탐색기에 새로운 프로젝트가 추가 된 것을 볼 수 있을 겁니다.




testClassLibrary 라는 프로젝트가 하나 추가 되었죠?




Class1.cs 파일을 열어보면 public class Class1 이라는 클래스가 생성되어있고

해당 클래스는 testClassLibrary 라는 네임스페이스로 묶여 있습니다.

정리하자면 testClassLibrary.Class1 이라는 클래스로 불러오게 될 구성이 만들어진 것이죠

참고로, Class1.cs파일을 파일명을 바꾸셔도, 그렇지 않으셔도 됩니다.

Class1 이라는 클래스명과는 관계가 없으나 코딩을 하다 보면 명시적으로 명칭을 정하는 게 더 보기 좋기는 하죠.

그럼 public class Class1 을 구성해 봅시다. 저번 포스트처럼 !



namespace testClassLibrary
{
    public class Class1
    {
        #region Instant Difinition
        /// <summary>
        /// Class1의 property
        /// string type : returnString
        /// </summary>
        private string returnString = null;                                           // 1
        #endregion

        #region public string getString
        /// <summary>
        /// getString method 를 정의 한다.
        /// 현재 날짜/시간을 returnString 에 할당 후 그 값을 반환한다.
        /// </summary>
        /// <returns>this.returnString</returns>
        public string getString()                                                     // 2
        {
            this.returnString = DateTime.Now.ToString();                     // 2-1
            return this.returnString;                                                  // 2-2
        }
        #endregion
    }
}



일단 간략하게 설명부터 하겠습니다.

testClassLibrary 이라는 네임스페이스의  Class1 클래스

1. Member Property 선언 (.NET API에선 variable 이라 하지 않고 property 라고 하더군요)

  - private 접근 지정어의 string 형 변수 returnString을 선언하고 null 값으로 초기화

  - private 접근 지정어 때문에 Member Method로만 취급가능.

2. Member Mehotd 정의

  - public 접근 지정어의 string 형 값을 반환하는 getString Method

  - public 접근 지정어를 사용한 이유는 다른 namespace에서 사용 할 것이기 때문.

  2.1 Class1의 Member Property 인 returnString에 현재날짜와 시간을 string형으로(ToString Method) 할당.

  2.2 Class1의 Member Property 인 returnString을 반환.

좀 중복되는 이야기가 많아서 그렇지 이해는 될 겁니다. 저번 포스트랑 차이가 없으니까요.


참고)

#region … 아래에  /// <summary> 는 제가 직접 타이핑 한 것이 아닙니다.

코드 헬퍼가 자동으로 만들어주는데요 거기에 데이터만 추가 한 것이죠.

사용 방법은 다음과 같습니다.

#region blah blah … 에서 한 줄 내리고  /// 를 치면 자동으로 생성 됩니다.

한번 해보세요? 잘 되죠? 팁입니다. (알 사람은 다 아는 팁)


자 그럼 클래스가 다 구성되었으니 원래 프로젝트로 돌아가죠!


여느 때와 다름없이 저는 또 이렇게 구성합니다!

그리고 Button을 더블 클릭하여 이벤트 핸들러가 취급할 메서드를 자동으로 생성합시다.





일단 namespace가 다른 것을 확인 하셔야 합니다.



자 우리가 만든 testClassLibrary namespace를 사용하려면 선언을 해 주어야 하는데요.

using testClassLibary;


코드를 추가해보죠




에러가 뜹니다.

해당 클래스의 참조가 없어서 네임스페이스를 사용 할 수 없어서 인데요.

방법은… 다시 또 따라 해봅시다. 한번 행하는 게 더 빠르게 이해됩니다. 이건 상용적인 행위니까요.




해당 솔루션 > 프로젝트에서 Reference > Add Reference... (Reference : 참조 란 뜻이죠..어?!)




Add Reference 창이 뜨는데 Projects Tab을 여시면 솔루션 이하 프로젝트가 뜹니다. 그리고 OK!


그럼 시술 전과 시술 후 추가된 Reference 항목이 보일 겁니다.


   ->  


그럼 더 이상의 에러메시지는 나타나지 않게 됩니다.

그럼 이제 또 코드를 구성해 봅시다.




namespace ClassLibrary2
{
    public partial class MainPage : PhoneApplicationPage
    {
        // Constructor
        public MainPage()
        {
            InitializeComponent();
        }

        #region private void button1_Click
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            testClassLibrary.Class1 tmpClass = new testClassLibrary.Class1();   // 1
            string msg = tmpClass.getString();                                                  // 2
            MessageBox.Show(msg);                                                             // 3
        }
        #endregion
    }
}



뭐 쉽죠?

1. testClassLibary 네임스페이스의 Class1 타입의 인스턴스 tmpClass 을 동적으로 생성.

2. string형 지역변수 msg에 tmpClass의 getString 메서드의 반환 값(현재 날짜와 시간) 할당
3. msg를 메세지 값으로 하는 메시지박스 출력.


디버그 버튼을 눌러 마지막 확인 해보실까요?



  ->


역시나 잘 되는군요.

네임스페이스가 다른 클래스 라이브러리 사용법은 이것으로 끝입니다.




다음 포스팅 내용은 대충 정리가 되어가고 있습니다.

http://www.charlespetzold.com/phone/index.html

제가 아잉폰을 구매한 후 출퇴근 시마다 짧게 보고 있는 pdf책입니다.

여기서 쉽게 설명 가능한 부분을 예제를 이용하여 ( 책의 예제는 보는 이에 따라선 쌩뚱 맞을 수도 있으니까요)

해보도록 해보겠습니다.

내용이 중요한 게 많아서 그냥 개개인더러 보라 넘길 수가 없더군요.

반응형

+ Recent posts