특성(4)
-
6장 - 리플렉션2 (확장모듈 만들어보기)
리플렉션을 이용한 확장 모듈 구현 대개 플러그인을 구현한 소프트웨어는 다음과 같은 동작 양식을 가진다. 1. exe 프로그램이 실행되는 경로 아래에 확장 모듈을 담도록 약속된 폴더가 있는지 확인2. 해당 폴더가있다면 그 안에 dll 같은 파일이 있는지 검사하고 로드3. 파일이 로드됐으면 사전에 약속된 조건을 만족하는 타입이 있는지 검사4. 조건에 맞는 타입이 있다면 생성하고, 사전에 약속된 메서드를 실행 이 조건에 맞춰다음과 같이 규칙을 정한다. 1. 확장모듈은 exe아래에 [plugin] 폴더2. 플러그인 타입조건은 타입에 [PluginAttribute] 라는 이름의 특성이 부여되어 있어야 함3. 호출된 메서드는 [StartupAttribute] 라는 이름의 특성이 부여되어 있어야 함. 다만 입력인자와..
2014.12.24 -
5장 - 2
AssemblyInfo.cs 비주얼 스튜디오로 프로젝트를 만들었다면Properties라는 폴더가 기본적으로 생성되고 그 하위에 AssemblyInfo.cs 파일이 있다.이 안에는 어셈블리 단위로 지정된 특성들이 존재하며대부분 프로젝트를 설명하기 위한 용도로 사용된다. checked, unchecked오버플로우나 언더플로우 발생시 예외 발생시키고 강제 종료. short c = 32767;checked{ ++c; // exception} params가변인자.void PrintAll ( params object[] vals ) app.config닷넷어플리케이션을 실행하면 CLR이 초기화 되고 C#코드들이 실행된다.이때 CLR 초기화 과정에 뭔가 관여하고 싶을 때가 있지만 순서 문제 때문에 불가능하다. app...
2014.11.23 -
5장 - 1
C# 1.0 특성 (attribute) /** author : Someone*/public class Everything{} 위 코드와 같은 주석을 남겼을때 이 주석은 빌드 과정을 거친 결과물인 exe / dll에는 전혀 남지 않게 된다.이런 문제를 해결해 주는 것이 특성이다. 닷넷의 어셈블리 파일에는 스스로는 기술하는 메타데이터가 있음어셈블리 내에서 구현하는 타입, 멤버등의 정보가 메타데이터임.특성도 이런 메타데이터로 분류. 특성은 사실 클래스.4장에 나왔던 [Flags] 특성은 FlagsAttribute 라는 클래스. 기본적으로 System.Attribute 클래스에서 파생된다. // 특성 클래스 정의 class AuthorAttribute : System.Attribute { } // [Author..
2014.11.21 -
4장 - 3
enum 정의시 [Flags] 특성 사용 가능enum타입의 인스턴스가 여러개의 값을 포함하는 용도로 쓰일때 [Flags] 특성 사용. enum Days{Sunday = 1,Monday = 2,Tuesday = 4,Wednesday = 8,// ...} 이런 정의가 있고Days dday = Days.Sunday | Days.Monday;Console.WriteLine(dday)의 결과는 3이 나온다. [Flags]enum Days...로 정의하면 같은 코드의 결과값이Sunday, Monday로 나오게 된다. Event 인덱서
2014.11.20