파이썬 & 오픈소스 개발 Tip과 강좌

이곳은 파이썬과 여러 오픈소스 기반 프레임워크 관련 Tip과 강좌 게시판 입니다. 관련 개발을 진행하면서 알아내신 Tip이나 강좌와 새로운 소식을 적어 주시면 다른 공부하는 분들에게 큰 도움이 됩니다. 감사합니다. SQLER.com은 개발자와 IT전문가의 지식 나눔을 실천하기 위해 노력하고 있습니다.

익명 타입 알아내는 법

컴포지트 2011.09.22 14:24 Views : 17868

LINQ 나온 이후로 익명 타입을 즐겨 쓰시는 분이 좀 많으실겁니다.

네. 정말 편리하죠. 익명 타입을 파라미터로 쓰기도 하고, 익명 타입 데이터를 받기 위해 리플렉션도 하고.

이러다 닷넷에 깊숙히 들어가겠습니다..ㅋㅋ


익명 타입을 정확히 알아내는 방법에 대해 고민하시는 분들이 꽤나 많으실겁니다.

Object 이긴 한데 너무 포괄적이고 그렇다고 어디에 상속되있는지 어떻게 감지할지 모르겠고.

그래서 오늘 이 팁을 통해 익명 타입에 대한 원리를 정확히 알고 짚고 넘어가세요.

익명 타입을 알아내는 소스입니다.


네임 스페이스는 아래와 같습니다.

using System;
using System.Reflection;
using System.Runtime.CompilerServices;

그리고 그 확인 소스입니다. Mono 에서도 먹힌다고 합니다.


익명 타입인가?
  1. public static bool IsAnonymousType(object source)
  2.         {
  3.             if (source == null)
  4.             {
  5.                 return false;
  6.             }
  7.  
  8.             var type = source.GetType();
  9.  
  10.             return type.IsGenericType
  11.                    && (type.Attributes & TypeAttributes.NotPublic) == TypeAttributes.NotPublic
  12.                    && (type.Name.StartsWith("<>", StringComparison.OrdinalIgnoreCase) || type.Name.StartsWith("VB$", StringComparison.OrdinalIgnoreCase))
  13.                    && (type.Name.Contains("AnonymousType") || type.Name.Contains("AnonType"))
  14.                    && Attribute.IsDefined(type, typeof(CompilerGeneratedAttribute), false);
  15.         }


익명 타입의 특징은 이렇습니다.

  • CompilerGenerated 특성이 적용됩니다.
  • 제네릭 타입입니다. 의외네요.
  • 클래스 이름에 "AnonymousType" 라는 문구가 포함됩니다.
  • 클래스 이름 머릿말에 C# 의 경우 "<>", VB의 경우 VB$ 로 시작됩니다.
  • 클래스는 public 이 아닙니다.


어때요. 참 쉽죠? 이제 익명 타입 속편하게 받아주세요.

출처 : http://jclaes.blogspot.com/2011/05/checking-for-anonymous-types.html

No. Subject Author Date Views
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2021년 1월 업데이트) 코난(김대우) 2021.01.01 54
63 CES2012에서 발표한 Kinect for Windows 소식! [2] 코난(김대우) 2012.01.10 14592
62 Visual Studio - ALM Summit 2011 동영상 / Day3 키노트 - The Microsoft Vision for ALM 코난(김대우) 2012.01.09 12557
61 Visual Studio - ALM Summit 2011 동영상 / Day2 키노트 - Project Patterns: From Adrenalin Junkies to Template Zombies 코난(김대우) 2012.01.09 13280
60 Visual Studio - ALM Summit 2011 동영상 / Day1 키노트 - ALM - With Power Comes Great Responsibility 코난(김대우) 2012.01.09 12464
» 익명 타입 알아내는 법 컴포지트 2011.09.22 17868
58 [C# 동영상 강좌] 20.컬랙션 SuYoung Kim(김수영) 2011.07.12 31357
57 [C# 동영상 강좌] 19.익명 형식 SuYoung Kim(김수영) 2011.07.12 26249
56 [C# 동영상 강좌] 18.Func, Action SuYoung Kim(김수영) 2011.07.12 28036
55 [C# 동영상 강좌] 17.델리게이트, 이벤트 SuYoung Kim(김수영) 2011.07.12 41513
54 [C# 동영상 강좌] 16.확장 메소드, Optional-Named 파라미터 SuYoung Kim(김수영) 2011.07.12 25497
53 [C# 동영상 강좌] 15.메소드 SuYoung Kim(김수영) 2011.07.12 28095
52 [C# 동영상 강좌] 14.인덱서(Indexer) SuYoung Kim(김수영) 2011.07.12 27092
51 [C# 동영상 강좌] 13.프로퍼티 SuYoung Kim(김수영) 2011.07.12 33550
50 [C# 동영상 강좌] 12.클래스 2 - 다양한 클래스 선언 SuYoung Kim(김수영) 2011.07.12 27834
49 [C# 동영상 강좌] 11.클래스 1 - 선언하기 SuYoung Kim(김수영) 2011.07.12 27271
48 [C# 동영상 강좌] 10.문자열 다루기 SuYoung Kim(김수영) 2011.07.12 25309
47 [C# 동영상 강좌] 09.배열 SuYoung Kim(김수영) 2011.07.12 30854
46 [C# 동영상 강좌] 08.예외 처리 SuYoung Kim(김수영) 2011.07.12 28392
45 [C# 동영상 강좌] 07.반복문 SuYoung Kim(김수영) 2011.07.12 24996
44 [C# 동영상 강좌] 06.조건식 SuYoung Kim(김수영) 2011.07.12 26354





XE Login