반응형

언어 자료구조 알고리즘/Escort C# 68

[C#] 10. .NET 어셈블리 - 전용 어셈블리

10. .NET 어셈블리 10.3 전용 어셈블리 이번에는 앞에서 만든 어셈블리를 전용으로 사용하는 방법에 대해 살펴보기로 합시다. 전용 어셈블리는 사용하는 응용 프로그램과 함께 어셈블리를 배포하여 해당 응용 프로그램에 의해서만 이용되는 어셈블리를 말합니다. 배포하는 위치는 응용 프로그램과 같은 디렉토리이거나 하위 디렉토리가 됩니다. 그리고 .NET에서 어셈블리 배포 방법은 기본으로 전용으로 되어 있어서 통합 개발 환경인 Microsoft Visual Studio를 가지고 개발할 때 특정 어셈블리를 참조하고 컴파일하면 자동으로 참조하는 어셈블리를 출력 폴더로 복사해 주어 개발자에게 편의성을 제공하고 있습니다. 솔루션 탐색기에서 참조 폴더에 마우스 우측 버튼을 클릭하여 나오는 컨텍스트 메뉴에서 참조 추가를 ..

[C#] 10. .NET 어셈블리 - 어셈블리 만들기

10. .NET 어셈블리 10.2 어셈블리 만들기 여기서는 .NET 어셈블리를 만들어 보기로 합시다. .NET 어셈블리 중에 실행 파일을 만드는 것은 이미 알고 있으므로 라이브러리를 만드는 것을 하겠습니다. 그리고 다중 파일 어셈블리의 부속이 되는 모듈도 만들어 보기로 합시다. 10.2.1 라이브러리 제작 .NET에서 라이브러리는 쉽게 제작할 수 있습니다. 코드를 작성하는 부분에서 다른 어셈블리에서 사용할 수 있는 형식을 정의할 때 public 키워드를 명시하기만 하면 됩니다. 멤버도 마찬가지로 다른 어셈블리에서 접근을 허용하게 하려면 접근 지정을 public으로 하면 됩니다. 즉, 다른 어셈블리에 정의된 형식이나 멤버 중에 사용할 수 있는 형식과 멤버는 접근 지정이 public으로 되어 있다는 것 말고..

[C#] 10. .NET 어셈블리 - .NET 어셈블리 구성 요소

10. .NET 어셈블리 .NET 어셈블리는 .NET 프레임워크 응용 프로그램을 구성하는 기본 컴포넌트입니다. 컴포넌트 기반의 프로그래밍은 모듈의 재사용성을 높여줍니다. .NET 응용 프로그램을 제작할 때 미리 작성된 라이브러리를 사용할 수 있는데 이 때 사용하는 라이브러리도 .NET 어셈블리이며 실행 파일도 .NET 어셈블리입니다. .NET 어셈블리는 EXE 파일 혹은 DLL 파일 형태로 만들 수 있으며 하나 이상의 모듈을 포함할 수도 있습니다. 그리고 .NET 어셈블리는 배포를 단순화하여 COM에서 발생했던 많은 배포 문제를 해결하였습니다. .NET 어셈블리는 자기 기술적인 메타 데이터를 갖고 있고 레지스트리 항목에 종속되지 않는 구성 요소로 디자인되어 있기 때문에 병행(Side by Side) 실행..

[C#] 9. 대리자와 이벤트 - 이벤트

9. 대리자와 이벤트 9.2 이벤트 이벤트는 특정 사건이 발생하는 것을 감시하는 개체가 이를 처리하는 개체에게 이벤트가 발생하였을 때 필요한 인자들과 함께 발생 사실을 통보하기 위한 특별한 멤버입니다. 이벤트를 감시하여 다른 개체에게 발생한 사실을 통보하는 개체를 이벤트 게시자라고 하며 이벤트가 발생하였을 때 이벤트 게시자로부터 통보받아 처리하는 개체를 이벤트 구독자라고 합니다. C#에서 이벤트는 대리자 멤버를 캡슐화할 때 event 키워드를 명시하면 됩니다. 그리고 이벤트로 만들기 위해 정의한 대리자는 이벤트를 통보한 개체와 이벤트 처리에 필요한 인자를 포함하여 시그니쳐를 정의하도록 가이드하고 있습니다. ▶ 이벤트를 위한 대리자 정의 class AddMemberEventArgs:EventArgs { p..

[C#] 9. 대리자와 이벤트 - 대리자

9. 대리자와 이벤트 대리자는 메서드의 시그니쳐를 정의하는 형식으로 콜백 처리 등에서 자주 사용됩니다. 그리고 event 키워드를 명시하여 캡슐화한 대리자를 이벤트라 말합니다. 이벤트는 특정 상황이 발생하였는지를 감시하는 개체가 다른 개체에게 발생한 사실을 통보하여 처리하기 위해 캡슐화한 대리자(event 키워드를 명시한 대리자)를 말합니다. 결국 이벤트는 대리자라고 볼 수 있습니다. 9.1 대리자 대리자는 알고리즘을 개체화하여 인자로 전달할 때 사용되는 형식입니다. 이에 대리자를 정의할 때는 알고리즘에 필요한 인자와 리턴 형식을 명시하여 정의합니다. delegate [리턴 형식] [대리자 형식 이름] ( [입력 인자 리스트] ); 개발자가 대리자 형식을 정의하면 컴파일러는 MulticastDelegat..

[C#] 8.2 컬렉션 - IComparable 인터페이스와 IComparer 인터페이스

8.2 컬렉션 8.2.5 IComparable 인터페이스와 IComparer 인터페이스 IComarable 인터페이스와 IComparer 인터페이스는 개체의 값 비교를 제공하기 위해 정의되었습니다. C#의 컬렉션은 대부분 Sort 메서드를 제공하는데 IComparable 인터페이스 기반의 요소를 보관하고 있을 때 정상적으로 동작하고 그렇지 않으면 예외를 발생합니다. 그리고 IComparer 개체를 입력 인자로 받는 Sort 메서드가 중복 정의되어 있는데 정렬하는 과정에서 입력 인자로 받은 IComparer 개체를 이용합니다. 또한, C#의 System에 정의되어 있는 기본 형식들은 ICompable 인터페이스를 기반으로 정의되어 있어서 기본 형식을 보관한 컬렉션은 Sort 메서드를 이용하여 정렬할 수 있..

[C#] 8.2 컬렉션 - IDictionary 인터페이스

8.2 컬렉션 8.2.4 IDictionary 인터페이스 IDictionary 인터페이스는 키와 값을 쌍으로 보관하는 컬렉션들의 기반 형식입니다. 그리고 IList 인터페이스처럼 IDictionary 인터페이스도 ICollection 인터페이스를 기반으로 정의한 형식입니다. IDictionary 인터페이스에는 키와 값을 쌍으로 보관할 때 사용하는 Add 메서드를 제공하고 있으며 내부 규칙에 따라 보관될 위치를 결정하게 됩니다. 따라서 IList 인터페이스와 다르게 특정 위치에 보관하는 Insert 메서드는 제공하지 않습니다. 그리고 IDictionary 인터페이스에는 같은 키를 가진 요소를 보관할 수 없습니다. 만약, Add 메서드를 이용하여 같은 키를 가진 요소를 보관하려고 시도하면 예외가 발생합니다...

[C#] 8.2 컬렉션 - IList 인터페이스

8.2 컬렉션 8.2.3 IList인터페이스 IList 인터페이스는 배열과 ArrayList의 기반 인터페이스입니다. IList 인터페이스에는 인덱서로 요소를 참조할 수 있는 멤버들을 약속하고 있습니다. 그리고 IList는 ICollection 인터페이스 기반의 형식이므로 앞에서 살펴본 ICollection에 약속한 멤버들에 대한 약속을 포함하게 됩니다. 여기에서는 새롭게 추가된 약속들에 대해서만 다룰게요. ICollection 인터페이스에서는 요소를 추가할 때 사용하기 위해 Add 메서드와 Insert 메서드를 제공하고 있습니다. Add 메서드는 차례대로 보관할 때 사용하고 Insert 메서드는 원하는 인덱스 위치에 보관할 때 사용합니다. int Add(object value); //요소를 추가하는 메..

[C#] 8.2 컬렉션 - ICollection 인터페이스

8.2 컬렉션 8.2.2 ICollection 인터페이스 ICollection 인터페이스는 제네릭이 아닌 모든 컬렉션의 기반 인터페이스입니다. 제네릭 컬렉션은 IColleciont 인터페이스를 기반으로 정의되어 있는데 여기서는 ICollection 인터페이스에 대해 살펴볼게요. ICollection은 C#에서 제공하는 제네릭이 아닌 모든 컬렉션의 기반 인터페이스로 컬렉션에 보관된 요소의 개수와 다른 컬렉션에 보관된 요소를 복사하는 메서드, 열거자, 동기화 메서드가 약속되어 있습니다. 물론, 열거자는 ICollection이 IEnumerable을 기반으로 정의되어 있기 때문입니다. ▶ ICollection 인터페이스의 약속된 멤버 class Program { static void Main(string[] ..

[C#] 8.2 컬렉션 - IEnumerable, IEnumerator 인터페이스

8.2 컬렉션 8.2.1 IEnumerable, IEnumerator 인터페이스 ICollection 인터페이스는 C#에서 제공하는 다양한 컬렉션 클랙스들의 기반이 되는 인터페이스입니다. 그리고 ICollection 인터페이스는 IEnumerable 인터페이스를 기반으로 확장된 인터페이스입니다. C#에서 제공되는 컬렉션 개체가 foreach 구문을 통해 보관된 각 요소에 공통적인 작업을 수행할 수 있는 것도 내부적으로 IEnumerable 인터페이스를 기반으로 정의되었기 때문입니다. IEnuerable 인터페이스에는 foreach 구문에서 필요한 멤버들을 약속한 IEnumerator 개체를 반환하는 GetEnumerator 메서드를 제공하고 있습니다. ▶ IEnumerable, IEnumerator에 약..

반응형