ASP/ADO.Net C# 실무 과정 자료] 객체 type 구하기






ASP/ADO.Net C# 실무 과정 자료] 객체 type 구하기

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


객체 type 구하기


■ 객체의 type 가져오기

- Type t1 = typeof(Class1);


- Type t2 = obj.GetType();


- Type t3 = Type.GetType(“System.Int32”);



■ System.Type 클래스

- 가져온 객체 type은 Type클래스에 정의된 각종 프로퍼티와 메소드를 사용해서 요리할 수 있다.


- IsClass (프로퍼티)


- GetMethods (메소드)



ASP/ADO.Net C# 실무 과정 자료] 리플렉션 (Reflection)







ASP/ADO.Net C# 실무 과정 자료] 리플렉션 (Reflection)

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.



리플렉션 (Reflection)


- 런타임시에 객체에 대한 정보를 질의(Query)하는 것



- System.Reflection 네임스페이스 안에 포함되어 있으며, 다음과 같은 클래스를 사용할 수 있다.



- Assembly, ConstructorInfo, EventInfo, FieldInfo, ManifestResourceInfo, MethodInfo, MemberInfo, Module, ParameterInfo, PropertyInfo



- 리플렉션 클래스를 이용하기 위해서는 Type 객체를 형성한 후에, Type 객체로 부터 리플렉션 객체를 얻어낸다.



ASP/ADO.Net C# 실무 과정 자료] 사용자정의 어트리뷰트  예제 &설명 









ASP/ADO.Net C# 실무 과정 자료] 사용자정의 어트리뷰트  예제 &설명 

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


사용자정의 어트리뷰트  예제 &설명



예제)




설명)
■ (1)은 어트리뷰트 클래스 정의의 시작이다. [AttributeUsage 로 시작되고 있으며, 해당 어트리뷰트의 타겟은 클래스와 메소드임을 명시하고 있다.


■ (1)여러 개의 타겟을 사용할 경우에는 예제와 같이 AttributeTarget.Class와 Method사이에 | 연산자를 사용한다.


■ (2)Coder 어트리뷰트의 항목을 지정해 주는 부분이다.
 

■ (3)는 Coder 어트리뷰트의 생성자이다. 보통 생성자에는 필수 항목 만을 쓰고, 나머지 항목은 프로퍼티를 사용한다.


■ (4)은 Coder 어트리뷰트를 클래스에 붙인다. [Coder 다음의 "Y.M.Kang" 은 생성자를 호출하는 파라미터가 되며, 그 뒤에 나오는 Comment="Debug" 는 생성자가 수행된 후, 프로퍼티의 set 메소드를 수행시킨다.


■ 결과적으로 coder=“Y.M.Kang”, comment=“Debug”가 된다.


■ (5)는 리플렉션을 이용하여 해당 클래스의 어트리뷰트를 가져오는 구문이다. 다음에 페이지 부터 설명이 나온다. 결과적으로 Class1에 붙여진 모든 어트리뷰트가 배열 형식으로 att에 저장된다.


■ (6) Class1에 붙은 어트리뷰트 중 CoderAttribute에 해당하는 것만 추출한다.


■ (7) Y.M.Kang과 Debug가 각각 결과값으로 출력된다.


ASP/ADO.Net C# 실무 과정 자료] 사용자정의(Custom) 어트리뷰트







ASP/ADO.Net C# 실무 과정 자료] 사용자정의(Custom) 어트리뷰트

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


사용자정의(Custom) 어트리뷰트


■ 어트리뷰트 정의하기


- System.Attribute 클래스를 상속받아 클래스이름+Attribute 라는 클래스 이름으로 클래스를 정의한다.


- Coder라는 이름의 어트리뷰트를 정의해 보자

[AttributeUsage(AttributeTargets.타겟종류)]

public class CoderAttribute : Attribute

{

}

이때 타겟 종류에는 다음과 같은 것이 올 수 있다.

Class, Constructor, Delegate, Enum, Event, Field,

Interface, Method, Module, Parameter, ReturnValue,

Struct, Assembly, ClassMembers, ALL



ASP/ADO.Net C# 실무 과정 자료]  Conditional 어트리뷰트 예제 &설명








ASP/ADO.Net C# 실무 과정 자료]  Conditional 어트리뷰트 예제 &설명

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


Conditional 어트리뷰트 예제 &설명 


예제)



설명 )

■ (1)의 네임스페이스가 필요하다. (Conditional 어트리뷰트를 쓰기 위해)


■ (2~3) Conditional은 메소드 위에 붙는다. DEBUG가 정의 되어 있으면 이 메소드가 실행된다는 의미이다. DEBUG의 정의는 #define DEBUG


■ (3) 실행될 것이다.


■ (4.1~4)는 전처리기라 불리는 것이다. 전처리기는 C#컴파일이 되기 전에 처리되는 매크로라고 할 수 있다. #define에서 정의하고, #undef는 정의를 없애는 것이다.


■ (4.3)에서 CHECKED는 #undef 했으므로 정의되지 않았다. 따라서 #if CHECKED에서 #endif 까지는 컴파일러가 인식하지 않는다.


ASP/ADO.Net C# 실무 과정 자료] 이트리뷰트의 사용법








ASP/ADO.Net C# 실무 과정 자료] 이트리뷰트의 사용법

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


이트리뷰트의 사용법


■ 어떤 형식인가?


■ [attribute(생성자 파라미터, 속성=값, 속성=값,…)]

(어트리뷰트이름) (필수파라미터들) (부가적파라미터들)


■ 어디다 붙이나?

  - 클래스 정의 윗 줄, 메소드 정의 윗 줄 등등 그러나 각 어트리뷰트들이 붙을 수 있는 위치는 정해져 있다.


  - 일반 어트리뷰트 중 Conditional이란 어트리뷰트를 살펴보면 적용위치는 메소드 이다. 따라서 아래와 같이 붙이면 된다.

[Conditional(“SomeThing”)]

public static void SomeMethod(){

SomeStatement;

}



ASP/ADO.Net C# 실무 과정 자료] 어트리뷰트 (Attribute)







ASP/ADO.Net C# 실무 과정 자료] 어트리뷰트 (Attribute)

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


어트리뷰트 (Attribute)


■속성이란 뜻이다. 런타임시에 정보를 전달하기 위한 메타 데이터이며 주석이며, 선언적인 태그를 말한다.


■ 쉽게 말해서 클래스나 메소드 위에 붙이는 이상하게 생긴 주석


■ 주석이긴 하지만 프로그램 가능하고, 리플렉션으로 질의할 수도 있다. A란 어트리뷰트를 B라는 클래스에 붙여두면 나중에 “그 클래스의 어트리뷰트가 뭔가?” 를 런타임에서 질의 할 수 있는 것이다.


ASP/ADO.Net C# 실무 과정 자료] 파일 입출력 예제 & 설명 







ASP/ADO.Net C# 실무 과정 자료] 파일 입출력 예제 & 설명 

실무개발자를위한 실무교육 전문교육센터학원

www.oraclejava.co.kr에 오시면 보다 다양한 강좌를 보실 수 있습니다.


파일 입출력 예제 & 설명 


예제)


설명)

(1) C:\temp.txt에 대한 입력스트림을 구성하였다.


(2) C:\temp_write.txt에 대한 출력스트림을 구성하였다.


(3) C:\temp.txt 파일에서 한 라인을 읽어서 문자열로 반환한다.


(4) WriteLine 사용법이 StreamWriter와 Console이 같다는 것을 알 수 있다.


(5) 스트림 사용후에는 닫아 주어야 한다.



+ Recent posts