다음을 통해 공유


방법: 리플렉션을 사용하지 않고 인쇄 시스템 개체 속성 가져오기

리플렉션을 사용하여 개체에 대한 속성 및 해당 속성의 형식을 항목별로 정리하면 응용 프로그램 성능이 느려질 수 있습니다. System.Printing.IndexedProperties 네임스페이스는 리플렉션을 사용하여 이 정보를 가져올 수 있는 방법을 제공합니다.

예제

이 작업의 단계는 다음과 같습니다.

  1. 해당 형식의 인스턴스를 만듭니다. 아래의 예제에서 형식은 Microsoft .NET Framework에서 제공하는 PrintQueue 형식이지만 PrintSystemObject에서 파생된 형식에 대해 거의 동일한 코드가 작동해야 합니다.

  2. 형식의 PropertiesCollection에서 PrintPropertyDictionary를 만듭니다. 이 사전에 있는 각 항목의 Value 속성은 PrintProperty에서 파생된 형식 중 하나의 개체입니다.

  3. 사전의 멤버를 열거합니다. 멤버 각각에 대해 다음을 수행합니다.

  4. 각 항목의 값을 PrintProperty로 업캐스트하고 이를 사용하여 PrintProperty 개체를 만듭니다.

  5. PrintProperty 개체 각각에 대해 Value의 형식을 가져옵니다.


            ' Enumerate the properties, and their types, of a queue without using Reflection
            Dim localPrintServer As New LocalPrintServer()
            Dim defaultPrintQueue As PrintQueue = LocalPrintServer.GetDefaultPrintQueue()

            Dim printQueueProperties As PrintPropertyDictionary = defaultPrintQueue.PropertiesCollection

            Console.WriteLine("These are the properties, and their types, of {0}, a {1}", defaultPrintQueue.Name, defaultPrintQueue.GetType().ToString() + vbLf)

            For Each entry As DictionaryEntry In printQueueProperties
                Dim [property] As PrintProperty = CType(entry.Value, PrintProperty)

                If [property].Value IsNot Nothing Then
                    Console.WriteLine([property].Name & vbTab & "(Type: {0})", [property].Value.GetType().ToString())
                End If
            Next entry
            Console.WriteLine(vbLf & vbLf & "Press Return to continue...")
            Console.ReadLine()


            // Enumerate the properties, and their types, of a queue without using Reflection
            LocalPrintServer localPrintServer = new LocalPrintServer();
            PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();

            PrintPropertyDictionary printQueueProperties = defaultPrintQueue.PropertiesCollection;

            Console.WriteLine("These are the properties, and their types, of {0}, a {1}", defaultPrintQueue.Name, defaultPrintQueue.GetType().ToString() +"\n");

            foreach (DictionaryEntry entry in printQueueProperties)
            {
                PrintProperty property = (PrintProperty)entry.Value;

                if (property.Value != null)
                {
                    Console.WriteLine(property.Name + "\t(Type: {0})", property.Value.GetType().ToString());
                }
            }
            Console.WriteLine("\n\nPress Return to continue...");
            Console.ReadLine();

참고 항목

참조

PrintProperty

PrintSystemObject

System.Printing.IndexedProperties

PrintPropertyDictionary

LocalPrintServer

PrintQueue

DictionaryEntry

개념

WPF의 문서

인쇄 개요