방법: 리플렉션을 사용하지 않고 인쇄 시스템 개체 속성 가져오기
리플렉션을 사용하여 개체에 대한 속성 및 해당 속성의 형식을 항목별로 정리하면 응용 프로그램 성능이 느려질 수 있습니다. System.Printing.IndexedProperties 네임스페이스는 리플렉션을 사용하여 이 정보를 가져올 수 있는 방법을 제공합니다.
예제
이 작업의 단계는 다음과 같습니다.
해당 형식의 인스턴스를 만듭니다. 아래의 예제에서 형식은 Microsoft .NET Framework에서 제공하는 PrintQueue 형식이지만 PrintSystemObject에서 파생된 형식에 대해 거의 동일한 코드가 작동해야 합니다.
형식의 PropertiesCollection에서 PrintPropertyDictionary를 만듭니다. 이 사전에 있는 각 항목의 Value 속성은 PrintProperty에서 파생된 형식 중 하나의 개체입니다.
사전의 멤버를 열거합니다. 멤버 각각에 대해 다음을 수행합니다.
각 항목의 값을 PrintProperty로 업캐스트하고 이를 사용하여 PrintProperty 개체를 만듭니다.
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();
참고 항목
참조
System.Printing.IndexedProperties