본문 바로가기

c#.net

박준호님의 C# 강좌 - Assembly 2 (다중 파일 Assembly) 다중 파일 어셈블리 myAseembly.dll에 포함된 세 개 파일 모두 하나의 어셈블리에 속함 하지만 파일 시스템에서는 이들 파일을 세 개의 개별 파일로 인식 Util.netmodule 파일은 아무러 어셈블리 정보를 포함하지 않기 때문에 모듈로 커파일 어셈블리가 만들어질 때 MyAssembly.dll과 Util.dll및 Graphic.bmp와의 관계를 나타내도록 어셈블리 매니페스트가 MyAssembly.dll에 추가된다. 코드 디자인시 단일 파일 어셈블리로 구성할 지, 다중 파일 어셈블리로 구성할 지, 다중 파일 어셈블리로 구성한다면 어떻게 구조화할 것인지를 결정해야함. namespace와 assembly namespace : data type들을 그룹화하는 논리적 개념 하나의 네임스페이스는 여러 개의.. 더보기
박준호님의 C# 강좌 - Assembly1 (단일 파일 Assembly) COM에 대하여 이미 사용중인 검증된 코드의 재사용을 위해 COM 활용 서로 다른 언어로 작성된 바이너리의 타입을 공유하기 위한 방법으로 COM 서버 생성 버전관리의 문제 Client에서 COM 서버를 호출할 때 COM 서버의 버전을 확인할 방법이 제공되지 않는다. 때문에 새로운 버전의 COM 서버를 설치하면 타입라이브러리를 새로 수정하고, 레지스트리를 업데이트하며, 상황에 따라 Client의 코드를 수정하는 상황도 발생(DLL 지옥) 배포의 문제 COM 서버의 정보를 레지스트리에 등록하는 과정은 어렵지 않다. 하지만 COM 서버의 위치나 이름이 바뀌게 되면, 레지스트리 변경이 쉽지 않게 된다. 이 경우 이 COM 서버를 접근하는 Client의 구성정보를 모두 변경해야 한다. 어셈블리(Assembly) .. 더보기
박준호님의 C# 강좌 - Preprocessor Directive(전처리기 지시문) 전처리기 지시문(Preprocess Directive) Compile 시에만 처리되는 명령문 특정 조건에서만 Compile 되도록 처리하기 위한 여러 버전의 Apllication 생성을 위해 standard Edition Enterprise Edition 디버깅 정보를 제공하기 위해 Debug를 위한 버전(debugging을 위한 기능 추가) Release를 위한 버전(Debugging을 위한 기능 제거) #으로 시작되는 지시문을 제공 #define, #undef Compiler에게 해당 기호의 정의 및 제거를 알림 #define DEBUG // DEBUG 기호의 정의 #define ENTERPRISE // ENTERPRISE 기호의 정의 #define STANDARD // STANDARD 기호의 정의 .. 더보기
박준호님의 C# 강좌 - C# 객체 소멸과 Garbage Collection 객체의 생성과 소멸 객체의 생성 new 연산자를 사용하여 class의 instance인 객체(object)를 생성 이 때 객체가 생성되는 곳이 Managed Heap 객체의 소멸 C++ 같은 경우 소멸자(destructor)를 정의하여 메모리 관리(리소스 해제)가 가능 C# 에서는 Garbage Collector가 메모리를 관리 소멸자가 존재하지만 언제 호출되는지 예측할 수 없다. 때문에 소멸자는 사용하지 않을 것을 권장 불가피하게 객체의 소멸 작업을 해주어야 하는 경우 DB, 파일 및 네트워크 연결과 같은 것은 Unmanaged Resource 리소스 해제 시 IDisposable interface의 Dispose() 사용 Garbage Collector garbage new 연산자를 통해 객체를 생성.. 더보기
박준호님의 C# 강좌 - Exception(예외 처리) Exception(예외 처리) Exception : Application이 실행중일 때 발생하는 오류를 처리하는 것 .NET에서 제공하는 구조화된 예외처리 방법 .NET에서 exception은 하나의 object exception은 어떤 비정상적인 error 상황이 발생되었을 때, 그 문제에 대한 정보를 제공하는 객체 system이나 사용자가 정의한 모든 exception은 System.Exception에서 파생된 것 System.Exception class member property HelpLink 현재 예외와 관련된 도움말 파일에 대한 링크를 설정하거나 리턴 Message 현재 발생한 Exception을 설명하는 text를 리턴 Source Exception을 발생시킨 application이나 객체.. 더보기
박준호님의 C# 강좌 - 이벤트(Event) Event 어떤 사건이 발생했을 때 Application에 통보하는 방법 이벤트 발생기(publisher) : 이벤트 발생시 다른 객체에 이벤트 발생을 통보하는 일을 담당하는 객체 이벤트 처리기(Subscriber) : 이벤트 발생시 실제 호출될 method(이벤트 핸들러)가 등록된 객체 Event 선언 Event와 함께 사용될 delegate의 정의 확인 delegate는 호출할 method의 형식만 정의한 것이기 때문에 해당 method의 형식이 이미 지정된 delegate가 있다면 그대로 사용이 가능하다 public delegate void AnyEventHandler(object sender, EventArgs e); event 키워드를 사용하여 class에 event member 정의 publi.. 더보기
박준호님의 C# 강좌 - Delegate Delegate 한 객체의 Method에서 자기를 생성한 객체의 함수를 호출해야 할 필요가 있을 때 사용 한 시스템에 있는 객체가 다른 객체를 생성해서 그것을 사용하고, 또 그 생성된 객체가 자기를 생성한 객체의 함수를 호출하는 형태의 '양방향 호출' Windows API의 Callback function(콜백 함수)를 생성하기 위한 function point 기능을 더 안정적으로 확장 event와 함께 사용되어 .NET Framework에서 event 처리에 많이 사용 일반적인 method와 달리 compile 시에는 매개변수로 전달되는 method가 무엇인지 알지 못한다. Delegate의 정의 현재 정의 하는 delegate가 어떤 종류의 method를 나타내는지 compiler에게 알려주는 것을 .. 더보기
박준호님의 C# 강좌 - Collection / ArrayList / HashTable Collection 배열의 경우 인덱스를 사용하여 각 항목(element)에 접근하게 되는데, Collection은 인덱스를 사용하지 않고 모든 element에 순차적으로 접근할 수 있는 방법을 제공한다. 각 element에 순차적으로 접근할 수 있도록 허용하는 객체의 집합니다. 객체가 열거자(enumerator)라고 불리는 객체의 참조를 제공하면 collection이라 한다. 열거자는 Collection 내의 항목을 순차적으로 엑세스 할 수 있다. foreach를 통해 객체의 내에 순차적으로 접근 할 수 있도록 기능을 제공한다. Collection의 동작 Collection이 foreach와 함께 사용될 때 foreach는 collectionm의 Ienumrable interface로 부터 GetEnu.. 더보기